如何注释它们在其他项目中共享的符号?

假设我有一个 Go 项目,它在另一个 Go 项目中充当共享库。如何标记在该项目之外使用的 Go 符号(consts、structs、vars)?


我想根本的问题是我很难知道哪个代码使用了所述符号。


请注意:这不是关于语义版本控制,我非常清楚并且我使用它。我知道 Semver 可以帮助识别重大更改。


相反,这是为了找出我是否真的破坏了我自己的一个项目(相比之下:这个符号应该不被导出或在包外使用)。我正在考虑 Go 中不存在的某种注释。


顺便说一句,IntelliJ 也不知道并将这些符号标记为“不必要的导出”。也许以 IntelliJ 为中心的解决方案就足够了。


为了说明我的问题:


package sharedlib


import "time"


// MyFavoriteTimeFormat is a blablabla...

const MyFavoriteTimeFormat = Time.RFC3339

package dependingproject


import "github.com/thething/sharedlib"

import "time"


func convertToString(timestamp time.Time) string {

    return timestamp.Format(sharedlib.MyFavoriteTimeFormat)

}

当我愉快地重命名MyFavoriteTimeFormate并发布它时,代码将在更新依赖项时中断依赖项目。


守着一只汪
浏览 78回答 1
1回答

POPMUISE

在其他包需要之前不要导出任何东西。如果另一个包需要一些东西,那么做导出,然后你就会知道如果有东西被导出,那是因为它是在包之外使用的。并且不要对导出的标识符进行重大更改。如果你真的必须,那么增加主要版本。使用 go 模块,不会破坏现有的其他包,他们将继续使用旧版本。如果你的模块被分解成多个包(因为它是“大”的),并且你希望只为模块的其他包导出一些东西,那么使用内部包的概念,所以它仍然是“未导出的”(不可导入) 到其他模块。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go