为什么我使用golang模块,并导入未在模块中选择的模块,但是go.sum文件具有go.mod文件哈希?

问题描述 投票:0回答:2

我现在正在使用golang 1.13并使用go模块。

但是,当我导入go模块中not选择的包(例如a)时,在go.sum文件中仍然有两行。 Go模块告诉我们:“每个已知的模块版本都会在go.sum文件中产生两行。第一行给出模块版本文件树的哈希值。第二行将“ /go.mod”附加到版本中,并给出仅模块版本(可能是合成的)go.mod文件的哈希,仅go.mod哈希允许下载和认证模块版本的go.mod文件,这是计算依赖关系图所需的,而无需下载所有模块的源代码代码。“

https://tip.golang.org/cmd/go/#hdr-Module_downloading_and_verification)。

但是此软件包不是模块,因此没有go.mod文件?例如,如果我导入的不是模块的程序包调用“ github.com/example/a”,在go.sum文件中,它仍然有这两行:

github.com/example/a v0.0.0-20190627063042-31896c4e4162 h1:rSqi2vQEpS+GAFKrLvmxzWW3OGlLI4hANnEf/ib/ofo=

github.com/example/a v0.0.0-20190627063042-31896c4e4162/go.mod h1:tcpxll8wcruwpPpWBbjAsWc1JbLHld/v9F+3rgLIr4c=

我的问题是,第二行是如何生成的?

go go-modules
2个回答
0
投票

go.sum包含预期的密码校验和特定模块版本的内容。每次依赖使用时,将其校验和添加到go.sum中(如果丢失或需要匹配)go.sum中的现有条目。

每个包/模块都是依赖项,每个依赖项都意味着要与go.sum中的校验和一起维护,因此无论它是包还是模块,都将得到维护。

源将相应地下载到$GOPATH/src目录中。

TRY-


0
投票

导致go.sum文件中的每个依赖项和散列都写入。一个与您的go.mod文件相关,另一个与从您导入的模块中导入的文件有关。尝试运行go mod tidy以减少导入的模块,您的go.mod文件将包含一些//indirect导入,这是您导入的模块在内部使用的文件。

© www.soinside.com 2019 - 2024. All rights reserved.