go module仓库代理(阿里云):GOPROXY=https://mirrors.aliyun.com/goproxy/
1.设置模块支持
go 1.11 有了对模块的实验性支持,大部分的子命令都知道如何处理一个模块,比如 run build install get list mod
子命令,第三方工具可能会支持的晚一些。到 go 1.12 会删除对 GOPATH
的支持,go get
命令也会变成只能获取模块,不能像现在这样直接获取一个裸包。
可以用环境变量 GO111MODULE
开启或关闭模块支持,它有三个可选值:off
、on
、auto
,默认值是 auto
。
GO111MODULE=off
无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。GO111MODULE=on
模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据go.mod
下载依赖。GO111MODULE=auto
在$GOPATH/src
外面且根目录有go.mod
文件时,开启模块支持。
在使用模块的时候,GOPATH
是无意义的,不过它还是会把下载的依赖储存在 $GOPATH/pkg/mod
中,也会把 go install
的结果放在 $GOPATH/bin
中。
2.初始化模块
go mod init [module name]
我们运行下 go mod init test命令试试,目录下生成了一个go.mod的文件,内容如下:
module test go 1.12
比如我要安装beego框架,运行下命令:go get github.com/astaxie/beego
文件内容发生了变化:
module test go 1.12 require ( github.com/astaxie/beego v1.12.0 // indirect github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect )
说明go get对文件产生了影响,把安装的包引入到了go.mod文件里。
其他命令说明:
go mod download :安装mod的模块到本地缓存
go mod vendor:vendor版本的解决方案,将依赖复制到vendor下面。
go mod tidy:移除未用的模块,以及添加缺失的模块。
go mod verify:验证所有模块是否正确。
以前都是下到$GOPATH/src下再引用模块,感觉有点OUT啊,这种方法好多了...