假设我有一个 Go 项目,它在另一个 Go 项目中充当共享库。如何标记在该项目之外使用的 Go 符号(consts、structs、vars)?我想根本的问题是我很难知道哪个代码使用了所述符号。请注意:这不是关于语义版本控制,我非常清楚并且我使用它。我知道 Semver 可以帮助识别重大更改。相反,这是为了找出我是否真的破坏了我自己的一个项目(相比之下:这个符号应该不被导出或在包外使用)。我正在考虑 Go 中不存在的某种注释。顺便说一句,IntelliJ 也不知道并将这些符号标记为“不必要的导出”。也许以 IntelliJ 为中心的解决方案就足够了。为了说明我的问题:package sharedlibimport "time"// MyFavoriteTimeFormat is a blablabla...const MyFavoriteTimeFormat = Time.RFC3339package dependingprojectimport "github.com/thething/sharedlib"import "time"func convertToString(timestamp time.Time) string { return timestamp.Format(sharedlib.MyFavoriteTimeFormat)}当我愉快地重命名MyFavoriteTimeFormate并发布它时,代码将在更新依赖项时中断依赖项目。
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
在其他包需要之前不要导出任何东西。如果另一个包需要一些东西,那么做导出,然后你就会知道如果有东西被导出,那是因为它是在包之外使用的。并且不要对导出的标识符进行重大更改。如果你真的必须,那么增加主要版本。使用 go 模块,不会破坏现有的其他包,他们将继续使用旧版本。
如果你的模块被分解成多个包(因为它是“大”的),并且你希望只为模块的其他包导出一些东西,那么使用内部包的概念,所以它仍然是“未导出的”(不可导入) 到其他模块。
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消