一、参考
Go Modules: an Alternative to GOPATH for Package Distribution
二、gopath
当go
语言在2009
年发布的时候,还没有对应的包管理器
使用 go get
将获取到所有的资源,并且保存位置为 $GOPATH/src
使用 go get
安装一个第三方库,将没有版本信息,默认为master
分支
三、go module
3.1 go modules
go1.11
推出,go modules
, 之前称为 vgo, (versioned go)
go modules
用于替换gopath
,用于包管理
go modules
可以保存所有第三方库的版本信息,在go.mod
中
3.2 go111module
go111module
是一个环境变量,通过该变量的配置,可以改变go
引用包的行为
同的go
版本,对于该环境变量有不同的表现:
(1) go1.11
和 go1.12
中的go111module
go111module=on
选项,将强制使用 gomodule
模块管理包,即使项目位于gopath
中
go111module=off
选项,将强制使用 gopath
管理包,即使项目不在gopath
中
go111module=auto
选项,是默认的选项,将根据情况分为:
a. 当位于gopath
中,表现为 go111module=off
b. 当位于gopath
外,表现为 go111module=on
(2) go1.13
中的go111module
a. 当存在 go.mod
,表现为 go111module=on
b. 当在gopath
外,即使没有 go.mod
,表现为 go111module=on
c. 当在gopath
内,并且没有go.mod
时候,表现为 go111module=off
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。