程序开发 · 2024年6月11日

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

当前位置: > > > > go.mod 文件中的排除指令如何工作?

来源:stackoverflow
2024-04-25 22:15:42
0浏览
收藏

知识点掌握了,还需要不断练习才能熟练运用。下面给大家带来一个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 来获取我自己的版本,同时等待上游版本接受我的补丁(或不是)。

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

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