在我的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/v2
,require github.com/my/mod/v2 v2.0.0
)和包导入路径(例如,import "github.com/my/mod/v2/mypkg"
)中。
同一份文档引用了 Go 官方常见问题解答中的基本原理:
供公众使用的软件包应尽量在发展过程中保持向后兼容性。Go 1 兼容性指南是一个很好的参考:不要删除导出的名称,鼓励标记复合文字,等等。如果需要不同的功能,请添加新名称而不是更改旧名称。如果需要完全中断,请使用新的导入路径创建一个新包。
和:
如果旧包和新包具有相同的导入路径,则新包必须向后兼容旧包。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消