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

问题描述 投票:1回答:1

所以我想从现有的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,重新分配它们似乎没问题,但是如果这个库有很多常量呢?

谢谢

go wrapper lib
1个回答
3
投票

没有“包嵌入”,所以来自lib的常量不会神奇地看起来是mylib的常量。如果你想在mylib中提供相同的常量,是的,你必须提供(复制)所有这些常量。

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

然后你的任务是提供一个包含大量常量的库的包装器,你还必须自己提供大量的常量(如果mylib的用户确实需要所有这些常量)。

如果你想模仿lib的完整功能,那就提出了一个问题,你是否真的需要这个,而且使用lib而不是mylib也不会更简单。

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

© www.soinside.com 2019 - 2024. All rights reserved.