0 1 Go Mod包管理教程 随着 go 1.11 的发布,go 官方引入了 go module 来解决依赖管理问题,go module 被集成到原生的 go cmd 中。
export GO111MODULE=on
02Go Mod与GoPath 现在 modules 机制仍在早期阶段,所以 golang 提供了一个环境变量 “GO111MODULE”,默认值为 auto。
如果当前目录里有 go.mod 文件,就使用 go modules,否则使用旧的 GOPATH 和 vendor 机制,因为在 modules 机制下 go get 只会下载 go modules,这一行为会在以后版本中成为默认值,这里我们保持 auto 即可,如果你想直接使用 modules 而不需要从 GOPATH 过度,那么把 “GO111MODULE” 设置为on。
modules 和传统的 GOPATH 不同,不需要包含例如 src,bin 这样的子目录,一个源代码目录甚至是空目录都可以作为 module,只要其中包含有 go.mod 文件。
03关于$GOPROXY使用
当我们使用 go 的时候,go 默认会直接从代码库中去下载所需的相关依赖,GOPROXY 这个环境变量可以让我们控制自己从哪里去下载源代码
如果 GOPROXY 没有设置,go 会直接从代码库下载相关依赖代码。如果你像下面这样设置了这个环境变量,那么你就会通过 goproxy.io 下载所有的源代码,设置 proxy 的命令如下:
export GOPROXY=https://goproxy.io
你可以通过置空这个环境变量来关闭 proxy,命令如下:
export GOPROXY=
原理
以前执行 go get golang.org/x/net
时,那么 net 代码库会下载到本地 GOPATH 中,以后有任何项目引用到了 golang.org/x/net
都不会再去下载这个代码库,因为本地 GOPATH 已经有了,哪怕版本不对,golan