为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个版本标签会导致错误?

为什么这个版本标签会导致错误?

Go
当年话下 2023-07-10 10:40:42
在我的go.mod文件中,我有:require (    // ... editted for brevity    github.com/Liquid-Labs/catalyst-firewrap v2.0.0-prototype.3    // ... )当我尝试构建依赖于此包的另一个包时,我得到:invalid module: github.com/Liquid-Labs/catalyst-firewrap should be v0 or v1, not v2 (v2.0.0-prototype.3)。在 go 模块化之前有一个重写,当时我没有标记东西,所以没有v1......这是问题吗?我没有运气在这里找到根本问题的解释。
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

根据Go 模块 wiki:

如果模块是版本 v2 或更高版本,则模块的主要版本必须作为 a 包含/vN在 go.mod 文件中使用的模块路径的末尾(例如,module github.com/my/mod/v2require github.com/my/mod/v2 v2.0.0)和包导入路径(例如, import "github.com/my/mod/v2/mypkg")中。

同一份文档引用了 Go 官方常见问题解答中的基本原理:

供公众使用的软件包应尽量在发展过程中保持向后兼容性。Go 1 兼容性指南是一个很好的参考:不要删除导出的名称,鼓励标记复合文字,等等。如果需要不同的功能,请添加新名称而不是更改旧名称。如果需要完全中断,请使用新的导入路径创建一个新包。

和:

如果旧包和新包具有相同的导入路径,则新包必须向后兼容旧包。


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信