# Go Modules
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的那样。最初的原型 vgo 于 2018 年 2 月公布。 2018 年 7 月,版本化模块登陆 Go 主存储库。
从 Go 1.14 开始,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。
Go 1.16 针对 go Modules 变更
- 模块模式 ( GO111MODULE=on) 是所有情况下的默认值
- 命令不再修改 go.mod/go.sum 默认情况下 ( -mod=readonly)
- go install pkg@version 是全局安装包/可执行文件的推荐方法
- retract 可在 go.mod
# 关于 go.mod
go.mod是 Go 项目的依赖描述文件,有三个信息:
- 当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
- 项目 go 语言版本号
- 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成 go.sum 依赖分析结果,随后 go 编译器会去下载这些第三方包,然后再编译运行。
# 初始化 go.mod
TIP
首先需要配置一下环境变量
执行一下命令,初始化 go.mod 文件
$ go mod init HelloWorld
go: creating new go.mod: module HelloWorld
go: to add module requirements and sums:
go mod tidy
1
2
3
4
2
3
4

go.mod 文件,内容如下:

其中,HelloWorld为当前项目的名称,可以随意设置。
就这样简单便完成了项目的 module 初始化。