在 Go 中创建包装器库时重新分配常量
Reassigning constants when creating wrapper library in Go
所以我想从现有的库 A 创建我自己的包装器库。
库 A 有一些函数,也有一些常量,例如:
package lib
const(
HeaderA = "headerA"
HeaderB = "headerB"
)
func doWork(string header) {
// some work
}
现在的问题是:我是否必须在我自己的库中重新分配这些常量?
package mylib
const (
myHeaderA = lib.HeaderA
myHeaderB = lib.HeaderB
)
这种情况下的最佳做法是什么?似乎可以重新分配它们以使用户不知道库 A,但是如果这个库有大量常量怎么办?
谢谢
没有 "package embedding",因此来自 lib
的常量不会神奇地显示为 mylib
的常量。如果您想在 mylib
中提供那些相同的常量,是的,您必须提供(复制)所有这些。
but what if this library has a ton of constants ?
然后你的任务是为这样一个有大量常量的库提供包装器,你还必须自己提供大量常量(如果 mylib
的用户确实需要所有这些常量) .
如果你想模仿 lib
的完整功能,这就提出了一个问题,你是否真的需要这个,使用 lib
而不是 [=11 不是更简单吗? =].
请注意,您可以创建一个实用程序来为 mylib
生成 .go
源文件,该文件将 "copy" lib
的所有导出常量。查看 go/parser
包作为起点。
所以我想从现有的库 A 创建我自己的包装器库。 库 A 有一些函数,也有一些常量,例如:
package lib
const(
HeaderA = "headerA"
HeaderB = "headerB"
)
func doWork(string header) {
// some work
}
现在的问题是:我是否必须在我自己的库中重新分配这些常量?
package mylib
const (
myHeaderA = lib.HeaderA
myHeaderB = lib.HeaderB
)
这种情况下的最佳做法是什么?似乎可以重新分配它们以使用户不知道库 A,但是如果这个库有大量常量怎么办?
谢谢
没有 "package embedding",因此来自 lib
的常量不会神奇地显示为 mylib
的常量。如果您想在 mylib
中提供那些相同的常量,是的,您必须提供(复制)所有这些。
but what if this library has a ton of constants ?
然后你的任务是为这样一个有大量常量的库提供包装器,你还必须自己提供大量常量(如果 mylib
的用户确实需要所有这些常量) .
如果你想模仿 lib
的完整功能,这就提出了一个问题,你是否真的需要这个,使用 lib
而不是 [=11 不是更简单吗? =].
请注意,您可以创建一个实用程序来为 mylib
生成 .go
源文件,该文件将 "copy" lib
的所有导出常量。查看 go/parser
包作为起点。