Переназначение констант при создании библиотеки-оболочки в Go - PullRequest
0 голосов
/ 12 сентября 2018

Итак, я хочу создать свою собственную библиотеку-оболочку из уже существующей библиотеки A. Библиотека A имеет некоторые функции, а также некоторые константы, например:

package lib


const(
   HeaderA = "headerA"
   HeaderB = "headerB"
)

func doWork(string header) {
   // some work
}

Теперь вопрос: нужно ли переназначать ихконстанты в моей собственной библиотеке?

package mylib
const (
    myHeaderA = lib.HeaderA
    myHeaderB = lib.HeaderB
)

Какова лучшая практика в этом случае?Кажется нормальным переназначить их, чтобы пользователь не знал о lib A, но что если в этой библиотеке есть куча констант?

Спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Нет "встраивания пакетов", поэтому константы из lib не будут волшебным образом казаться константами mylib. Если вы хотите предоставить те же самые константы в mylib, да, вы должны предоставить (скопировать) все эти.

а что если в этой библиотеке есть тонна констант?

Затем в вашей миссии по предоставлению оболочки для такой библиотеки, которая имеет тонну констант, вы также должны предоставить тонну констант самостоятельно (если пользователям mylib действительно нужны все эти константы).

Если вы хотите имитировать полную функциональность lib, возникает вопрос, действительно ли вам это нужно, и не проще ли будет использовать lib вместо mylib.

Обратите внимание, что вы можете создать утилиту, которая будет генерировать исходный файл .go для mylib, который будет "копировать" все экспортированные константы lib. Проверьте go/parser пакет для начальной точки.

...