登录
首页 >  Golang >  Go问答

go.mod 文件中的排除指令如何工作?

来源:stackoverflow

时间:2024-04-25 22:15:42 381浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《go.mod 文件中的排除指令如何工作?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

新的 Go 版本 1.11 引入了非常棒的模块概念。

在文档中,它说有四个指令可以在 go.mod 文件中使用:modulerequireexincludereplace

它还解释说:

排除和替换指令仅适用于当前(“主”) 模块。排除和替换除主模块之外的模块中的指令 构建主模块时会忽略模块。替换和 因此,排除语句允许主模块完全控制 其自己的构建,也不受完全控制 依赖关系。

但我仍然不明白 exinclude 指令是如何工作的。

有人可以向我解释 exinclude 指令的工作原理吗?如果可能的话,请举例说明何时使用它?


解决方案


这是一个半假设的假设示例:

go.mod

module github.com/example/project

require (
    github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc
    github.com/google/uuid v1.1.0
)

exclude github.com/SermoDigital/jose v0.9.1

replace github.com/google/uuid v1.1.0 => git.coolaj86.com/coolaj86/uuid.go v1.1.1

排除

对于 github.com/sermodigital/jose 软件包,它具有 v0.9.1 的正确 git 标记,但当前版本是 v1.1,这不是正确的git 标签(缺少“补丁”版本)。

通过排除正确版本控制(但不工作)的代码,它会导致 go mod 从 master 获取(它没有正确版本控制,但具有工作代码)。

替换

同样(并且是真正的假设),如果我有 github.com/google/uuid 的补丁,我可以创建一个分支并使用 replace 来获取我自己的版本,同时等待上游版本接受我的补丁(或不是)。

阅读整个 Modules 文档。在您引用的文档的下方,

理论要掌握,实操不能落!以上关于《go.mod 文件中的排除指令如何工作?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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