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啊,这种方法好多了...
