Go中的go.mod和go.sum是什么?

创建于 2024年1月18日修改于 2024年5月5日
Go

Go基础


go.modgo.sum 是伴随 Go 模块机制引入的两个重要文件。它们用于管理依赖关系并确保 Go 项目的可复现性。

go.mod 文件是模块定义文件。它描述了模块的名称、依赖关系及其 Go 版本兼容性。

示例 go.mod 文件:

module github.com/yourusername/yourproject

go 1.16

require (
    github.com/example/package v1.2.3
    github.com/another/package v0.4.1
)

它主要执行以下三个操作:

  1. 指定模块的名称,通常以版本控制库路径的形式呈现(例如 module github.com/yourusername/yourproject)。
  2. 指定模块所需的最低 Go 版本。
  3. 列出模块的直接依赖项,包括其版本和所需的替代项。

go.sum 文件包含特定模块版本内容的加密校验和。它确保你的项目可以复现准确的依赖关系,防止未授权的依赖项更改甚至篡改。

示例 go.sum 文件:

github.com/example/package v1.2.3 h1:abc123...
github.com/example/package v1.2.3/go.mod h1:def456...
github.com/another/package v0.4.1 h1:xyz789...
github.com/another/package v0.4.1/go.mod h1:uvw321...

它列出了依赖关系的具体版本,每个版本都与一个加密哈希相关联。 如果在 go.mod 中指定了替代项,替代模块的校验和也会被包括在内。

管理依赖

初始化

可以通过运行以下命令在项目中初始化 Go 模块:

go mod init <module-name>

添加依赖项

将依赖项添加到你的项目中:

go get <package>

这会更新 go.modgo.sum

更新依赖项

根据 go.mod 中指定的版本约束更新依赖项:

go get -u

清理依赖项

删除未使用的依赖项并清理 go.modgo.sum

go mod tidy