go mod
Go Modules是 Go 语言从 1.11 版本之后官方推出的版本管理工具,Modules官方定义为:
模块是相关 Go 包的集合。modules 是源代码交换和版本控制的单元。 go 命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules 替换了旧的基于 GOPATH 的方法来指定在给定构建中使用哪些源文件版本
Go Modules 使用 go.mod 文件进行依赖管理,所有项目中需要使用的模块都在 go.mod 文件中进行维护
- 模块创建
go mod init <module name>
“go mod init ” 命令创建一个新的模块,初始化描述当前模块的 go.mod 文件,初始时,go mod 文件中仅包含模块路径以及 go 版本。
-
go.sum文件
当第一次运行 “go build” 或 “go test” 命令时,将安装所有依赖包的特定版本,同时会创建 go.sum 文件,用于维护校验和。(再次运行同一项目,不会再次安装依赖包)
-
require 语句
go.mod 文件中的 require 会包含项目中所有依赖模块以及对应版本
-
replace 语句
go.mod 文件中的 replace 指向依赖包的本地版本,通过创建远程版本的本地拷贝,无需从远程进行安装
-
//indirect
项目并不直接使用这些依赖包,而是存在传递性依赖(transitive dependencies)
-
go mod tidy
该命令确保 go.mod 文件、go.sum 文件与模块源代码匹配:
- 添加缺失的模块依赖编译当前模块包以及依赖包
- 移除未被使用的依赖包
When we upgrade the version of a specific package in go.mod we need to run the command go mod tidy to update the checksums in go.sum
go work
go work 是 Go 语言 1.18 版本发布后进行多模块工作区管理的方法,多模块工作区能够让开发者更容易地同时处理多个模块的工作
-
go work init
初始化工作区文件,用于生成 go.work 工作区文件
-
go work use
添加新的模块到工作区,模块必须是 go mod 依赖管理的仓库