为什么 go.mod 随着 go test 不断变化

Why go.mod keeps changing with go test

嗨,我想在我的 go.mod 中固定特定版本的依赖项,比如

    github.com/dependecy v1.7.0

当我 运行 go testgo build 时,有时它会更新为

    github.com/dependecy v1.8.0

棘手的部分是它有时会改变,有时不会。我们想固定到旧版本,因为新版本有一个错误。知道为什么会这样吗?

我相信发生这种情况的原因是因为您可能有一个依赖项,可能需要更高版本的模块。来自 go 文档 here

If multiple versions of a particular module are added to the list, then at the end only the latest version (according to semantic version ordering) is kept for use in the build.

您可以尝试文档中列出的命令,或者使用 -mod=readonly 标记 运行 go build。这应该可以帮助您了解可能触发此问题的原因。

Go 模块不支持单个模块中同一包的多个次要版本,如果添加,则最后仅保留最新版本以供构建使用。

你可以有一些需要高版本的依赖,替换旧的。

如果某个模块推出了带有错误的 v1.8.0,请提交错误或根据需要分叉存储库。