头图

一、参考

golang学习系列目录——更新ing

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.11go1.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

image.png

四、场景

image.png

4.1 安装第三方库


一曲广陵散
76 声望21 粉丝

柴米油盐酱醋茶