3 回答
TA贡献1818条经验 获得超8个赞
go.sum
包含特定模块版本内容的预期加密校验和。每次使用依赖项时,如果缺少或需要匹配 go.sum 中的现有条目,则将其校验和添加到 go.sum。
每个包/模块都是依赖项,每个依赖项都意味着使用校验和进行维护,go.sum
因此无论是包还是模块,它都会被维护。
源将相应地下载到$GOPATH/src
目录中。
尝试 -
TA贡献1943条经验 获得超7个赞
因为在go.sum
文件中写入了每个依赖项和哈希。与您的go.mod
文件相关的一个,以及从您导入的模块中导入的一个。尝试运行go mod tidy
以减少导入的模块,您的go.mod
文件将包含一些//indirect
导入,这是您导入的模块在内部使用的那个。
TA贡献1796条经验 获得超4个赞
或许Golang源码可以说明原因:
func (r *codeRepo) legacyGoMod(rev, dir string) []byte {
// We used to try to build a go.mod reflecting pre-existing
// package management metadata files, but the conversion
// was inherently imperfect (because those files don't have
// exactly the same semantics as go.mod) and, when done
// for dependencies in the middle of a build, impossible to
// correct. So we stopped.
// Return a fake go.mod that simply declares the module path.
return []byte(fmt.Sprintf("module %s\n", modfile.AutoQuote(r.modPath)))
}
来自这里的代码:https ://github.com/golang/go/blob/acac535c3ca571beeb168c953d6d672f61387ef1/src/cmd/go/internal/modfetch/coderepo.go#L857
↓ VSCode 打开/usr/local/go/src
:
定位到
cmd/go/internal/modfetch/coderepo.go
,给func添加断点legacyGoMod
定位到
cmd/go/internal/modfetch/coderepo_test.go
,按 F5稍等片刻,停在断点处
- 3 回答
- 0 关注
- 207 浏览
添加回答
举报