Golang 中的包版本控制

我对 Golang 项目中的包版本控制有疑问。

创建标签后,例如v1.0.0.
我可以拉这个标签使用go get pkg_address/@v1.0.0它很好并且工作正常。

但是当我在 github 中看到 Go 包时,我看到它写在他们的安装部分以使用pkg_address/v1.0.0.

事实上,他们正在拉一个没有@.
他们甚至在他们的代码中使用导入包,pkg_address/v1即使他们的项目中没有调用目录v1

如果我安装不带@.
即使在使用pkg_address/@v1.0.0我的导入路径后也不会改变,我不需要在我的导入路径中指定版本。

例如,您使用此命令安装 echo 包,并使用代码中go get github.com/labstack/echo/v4的标签导入包,但包目录中没有。v4v4

我怎样才能像 github 包一样进行版本控制?

PS我正在使用gitlab。


30秒到达战场
浏览 204回答 1
1回答

ibeautiful

这是一个模块路径命名约定,它适用于高于v1.https://go.dev/ref/mod#module-path如果模块以主版本2 或更高版本发布,则module path 必须以主版本后缀结尾,例如/v2. 这可能是也可能不是子目录名称的一部分。例如,路径为 golang.org/x/repo/sub/v2 的模块可能位于存储库 golang.org/x/repo 的 /sub 或 /sub/v2 子目录中。https://go.dev/ref/mod#major-version-suffixes从主要版本 2 开始,module paths 必须有一个/v2与主要版本匹配的主要版本后缀。例如,如果模块在 v1.0.0 中具有路径 example.com/mod,那么在 v2.0.0 中它必须具有路径 example.com/mod/v2。echo 的 v4module path可以在这里找到。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go