在Go中创建包装器库时重新分配常量

时间:2018-09-12 13:21:17

标签: go wrapper lib

所以我想从已经存在的库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 :(得分:3)

没有“包嵌入”,因此lib的常量不会神奇地显示为mylib的常量。如果要在mylib中提供相同的常量,可以,必须提供(复制)所有这些常量。

  

但是如果这个库有大量常量怎么办?

然后,您要为具有大量常量的此类库提供包装程序,您还必须自己提供大量常量(如果mylib的用户确实需要所有这些常量)。 / p>

如果您想模仿lib的全部功能,则会引发一个问题,即您是否真的需要它,而仅使用lib而不是mylib会不会更简单

请注意,您可以创建一个实用程序,该实用程序将为.go生成一个mylib源文件,该文件将“复制”所有导出的lib常量。请查看go/parser软件包以了解起点。