登录
首页 >  Golang >  Go问答

管理 Golang 包的版本

来源:stackoverflow

时间:2024-02-22 22:30:27 451浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《管理 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 之后,我的导入路径也不会更改,并且我不需要在导入路径中指定版本。

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

如何像 github 包一样进行版本控制?

附注我正在使用 gitlab。


正确答案


这是一个模块路径命名约定,它适用于高于 v1主要版本。

https://go.dev/ref/mod#module-path

  • 如果模块以主要版本2或更高版本发布,则 模块路径 必须以主要版本后缀结尾,例如 /v2 。这可能或可能 不是子目录名称的一部分。例如,该模块具有 路径 golang.org/x/repo/sub/v2 可以位于 /sub 或 /sub/v2 中 存储库的子目录 golang.org/x/repo。

https://go.dev/ref/mod#major-version-suffixes

从主要版本 2 开始, 模块路径 必须 有一个主要版本 版本后缀如 /v2 与主要版本匹配。例如, 如果模块在 v1.0.0 具有路径 example.com/mod,则它必须具有 版本 v2.0.0 的路径 example.com/mod/v2。

并且可以找到echo的v4 模块路径 here

今天关于《管理 Golang 包的版本》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>