在Go中创建包装器库时重新指定常量

在Go中创建包装器库时重新指定常量,go,wrapper,lib,Go,Wrapper,Lib,所以我想从已经存在的liba创建我自己的包装器库。 库A有一些函数和一些常量,例如: package lib const( HeaderA = "headerA" HeaderB = "headerB" ) func doWork(string header) { // some work } 现在的问题是:我必须在我自己的库中重新分配这些常量吗 package mylib const ( myHeaderA = lib.HeaderA myHeader

所以我想从已经存在的liba创建我自己的包装器库。 库A有一些函数和一些常量,例如:

package lib


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

func doWork(string header) {
   // some work
}
现在的问题是:我必须在我自己的库中重新分配这些常量吗

package mylib
const (
    myHeaderA = lib.HeaderA
    myHeaderB = lib.HeaderB
)
在这种情况下,最佳做法是什么?为了让用户不知道liba,重新分配它们似乎是可以的,但是如果这个库有大量的常量呢

谢谢

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

但是如果这个库有大量的常量呢

然后,在为这样一个拥有大量常量的库提供包装的任务中,您还必须自己提供大量常量(如果
mylib
的用户确实需要所有这些常量)

如果您想模仿
lib
的完整功能,这就提出了一个问题,即您是否真的需要它,使用
lib
而不是
mylib
不是更简单吗

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

您“必须”这样做吗?好吧,这取决于你希望你的软件包如何工作。如果你真正的问题是“有没有一种自动的方法可以做到这一点?”答案是否定的。理论上,这可以通过一些代码生成来完成,但我不知道有任何工具可以做到这一点,不幸的是,要求这样的工具将是离题的。