启用 Go Modules 功能
- GO111MODULE=off,无模块支持
- GO111MODULE=on,模块支持
- GO111MODULE=auto,根据当前目录来决定是否启用 module 功能
在使用 go modules 时,GOPATH 是无意义的,不过它还是会把下载的依赖存储在 $GOPATH/pkg/mod 中,也会把 go install 的结果放在 $GOPATH/bin 中,当 modules 功能启用时,依赖包的存放位置变更为 $GOPATH/pkg 允许同一个 package 多个版本并存,且多个项目可以共享缓存的 module 文件。
# 通过 go 命令设置(推荐)
go env -w GO111MODULE=on
# or 直接导出,也可以写到 ~/.bashrc、/etc/profile、~/.zshrc 等文件中
export GO111MODULE=on
# or 临时使用(不推荐)
GO111MODULE=on go get -u github.com/stretchr/testify
# 随时确认当前 shell 的设置
go env | grep GO111MODULE
设置代理
默认的GOPROXY是 goproxy.io,可以改为国内的:
# 设置国内的代理
go env -w GOPROXY=https://goproxy.cn,direct
# 测试
time go get golang.org/x/tour
设置私有仓库
# 设置不走 proxy 的私有仓库,多个用逗号相隔
# 比如你的公司内部共享的代码,或者团队有 github enterprise 等等
go env -w GOPRIVATE=*.your-company.com,*.your-team-github.com