所以我想从已经存在的库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,但是如果此库具有大量常量,该怎么办?
谢谢
答案 0 :(得分:3)
没有“包嵌入”,因此lib
的常量不会神奇地显示为mylib
的常量。如果要在mylib
中提供相同的常量,可以,必须提供(复制)所有这些常量。
但是如果这个库有大量常量怎么办?
然后,您要为具有大量常量的此类库提供包装程序,您还必须自己提供大量常量(如果mylib
的用户确实需要所有这些常量)。 / p>
如果您想模仿lib
的全部功能,则会引发一个问题,即您是否真的需要它,而仅使用lib
而不是mylib
会不会更简单
请注意,您可以创建一个实用程序,该实用程序将为.go
生成一个mylib
源文件,该文件将“复制”所有导出的lib
常量。请查看go/parser
软件包以了解起点。