第九章(包结构)【包管理】
GOPATH和GOMODULE
GOPATH和GOMODULE都是go的包管理工具
-
在Go创世初期时使用
go get
来获取所有源并将其存储在$GOPATH/src
中(GOPATH模式)。 没有版本控制 -
在Go 1.11引入了GoMODULE。 Go Modules不使用GOPATH存储软件包。将其存储在
$GOPATH/pkg/mod
。使用go.mod文件标记软件包的版本并追踪每个包的版本 -
所以说go就有了两个包管理工具,为了兼容老项目,所以两个包管理方式就并存了。
-
go env 有
GO111MODULE
配置项- 当
GO111MODULE=on
时:强制使用GoMODULE - 当
GO111MODULE=off
时:强制使用GOPATH - 当
GO111MODULE=auto
(默认)时:这时候就看项目路径了,当项目路径在GOPATH目录时则使用GOPATH模式,否则使用GOMODULE.
- 当
GO111MODULE=auto
可能版本不同语意稍有不同,go1.13通过判断go.mod文件是否存在来决定使用哪个模式