Go Modules 简介
Go Modules 相关属性
开关变量
GO111MODULE,可选值:
auto:只在项目包含了go.mod文件时启用Go modules。
on:启用Go modules。
off:禁用Go modules。
设置命令:
go env -w GO111MODULE=on
辅助环境变量
GOPROXY,主要用户设置 Go 模块代理:
值:是一个以英文逗号分隔的Go module proxy 列表。
通过go env命令可查询默认值,如果是proxy.golang.org,因其在中国无法访问,所以推荐使用goproxy.cn
设置命令:
go env -w GOPROXY=https://goproxy.cn,direct
作用:用于使Go在后续拉去模块版本时能够脱离传统的VCS方式从镜像站点快速拉取。
设置为“off”:禁止Go在后续操作中使用任何Go module proxy。
GONOPROXY
GOSUMDB
GONOSUMDB
GOPRIVATE
辅助概念
主要文件
go.mod:是启用了Go modules 的项目所必须的最重要的文件,它描述了当前项目(也就是当前模块)的元信息,每一行都以一个动词开头,目前有以下5个动词:
module:用于定义当前项目的模块路径。
go:用于设置预期的 Go 版本。
require:用于设置一个特定的模块版本。
exclude:用于从使用中排除一个特定的模块版本。
replace:用于将一个模块版本替换为另一个模块版本。
实例代码:
// go.mod
module example.com/foobar
go 1.13
require (
example.com/apple v0.1.2
example.com/banana v1.2.3
example.com/banana/v2 v2.3.4
example.com/pineapple v0.0.0-20190924185754-1b0db40df49a
)
exclude example.com/banana v1.2.4
replace example.com/apple v0.1.2 => example.com/rda v0.1.0
replace example.com/banana => example.com/hugebanana
go.sum
主要管理子命令
内置在几乎所有其他子命令中:go get、go install、go list、go test、go run、go build…
Global Caching:不同项目的相同模块版本只会在你的电脑上缓存一份。
参考资源