登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-05 15:00:36 454浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《为什么这个版本标签会导致错误?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

在我的 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 ...这是问题吗?我没有运气在这里找到根本问题的解释。


解决方案


根据 Go modules wiki

如果模块是版本 v2 或更高版本,则模块的主要版本 必须作为 /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 兼容性指南是 这里有很好的参考:不要删除导出的名称,鼓励标记 复合文字等等。如果需要不同的功能, 添加新名称而不是更改旧名称。如果完全中断 如果需要,请使用新的导入路径创建一个新包。

和:

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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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