go - 为什么我使用 golang 模块,并导入一个未选择模块的模块,但 go.sum 文件有 go.mod 文件哈希?
问题描述
我现在正在使用 golang 1.13 并使用 go 模块。
但是,当我导入未在 go 模块中选择的包(例如,a)时,在 go.sum 文件中仍然有两行。Go 模块告诉我们“每个已知的模块版本都会在 go.sum 文件中产生两行。第一行给出模块版本文件树的哈希值。第二行将“/go.mod”附加到版本并给出仅模块版本的(可能是合成的)go.mod 文件的散列。go.mod-only 散列允许下载和验证模块版本的 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.sum
文件中写入了每个依赖项和哈希。与您的go.mod
文件相关的一个,以及从您导入的模块中导入的一个。尝试运行go mod tidy
以减少导入的模块,您的go.mod
文件将包含一些//indirect
导入,这是您导入的模块在内部使用的那个。
推荐阅读
- sql - 如何查询客户之前是否给过较低的评价?
- c# - 连接列表的属性
并在 C# 中写入文件 - wpf - 第一次左键单击 wpf 按钮时 ContextMenu 为空
- cuda - Correct implementation of spin lock in CUDA
- knockout.js - Confused with legacy knockout code. Can't tell if it's commented out or not
- php - psr-4 autoload not working on namecheap.com live server
- java - Use "()" in Spring data.repository @query annotation
- node.js - WebSocket: Handle multiple connections for separate client apps
- c# - Moving GameObject based on Joystick input
- swift - 如何将星期几从英语更改为区域设置