go 很早就考虑了依赖管理的问题,内置 go get
命令,可以直接获取对应的依赖,非常方便,但是有一个巨大的缺陷,没有版本的维护和管理,而版本不一致可能会导致各种兼容性问题,因此出现了很多第三方依赖管理工具,dep
和 glide
就是其中的佼佼者,到了 go 1.11 官方终于推出了自己的依赖管理工具 mod
,并内置在 go 版本中,go mod
使用简单,功能强大,并且能自动兼容大多数之前的第三方工具,大量优秀的开源库都已经切换到了 go mod
,大有一统江湖之势
GO111MODULE
一个最大的变化是 golang 的项目终于不再依赖 $GOPATH
目录了,之前的项目由于 import
机制问题,所有项目都位于 $GOPATH/src
目录下,虽然也没有太大的问题,但总是让人感觉很怪,go 1.11 终于调整了这个问题,将代码从 $GOPATH
中迁出了,为了兼容之前研发模式,也仍然支持放到 $GOPATH
下,通过 GO111MODULE
环境变量控制
GO111MODULE=off
: 关闭 mod,查找vendor
目录和$GOPATH
路径下的依赖GO111MODULE=on
: 开启 mod, 仅根据go.mod