Go modules 是 Go 语言的官方默认的包管理方案。
在Go 1.11 的时候就已经发布了,只是默认没有启用,需要通过参数开启
GO111MODULE="on"
在 Go1.12、 Go1.13已经有了很大的改善。
在Go1.14已经正式启用,推荐在生产上使用。
之前在GOPATH的环境下载一个包都需要用到梯子,现在go modules 直接使用goproxy进行代理设置方便多了。
设置
使用go modules的时候还是要配置GOPATH变量的
变量
echo 'export GOROOT=/opt/go' >> /etc/profile
echo 'export GOPATH=/data/gopath' >> /etc/profile
echo 'export PATH=/opt/go/bin:$PATH' >> /etc/profile
source /etc/profile
go env -w GO111MODULE=on
不管默认有没有开,我们这里可以直接手动设置开启。
设置代理
go env -w GOPROXY=https://goproxy.cn,direct
也可以设置多个
go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct
设置代理,可以快速下载到包,不再需要梯子了。
使用使用go modules的时候,需要生成go.mod文件来保存包信息。
生成go.mod
go mod init project
把project替换成项目的名称就可以了,调用本项目下的包就是import project/.../...
自动检查依赖
go mod tidy
不知道项目下有依赖什么包,直接使用这个命令就会自动在go.mod生成依赖包的记录
下载依赖
go mod download
根据go.mod下载对应的依赖包
查看现有的依赖结构
go mod graph
go mod edit 编辑 go.mod 文件
导出项目所有的依赖到vendor目录
go mod vendor
这个一般也没多大必要,如果你怕你的依赖某天有可能被删除,就保存一下包
校验模块是否被篡改过
go mod verify
go mod why gopkg.in/ini.v1
gopkg.in/ini.v1就是模块的名称
总结如果使用vscode开发,安装好vscode-go,一些包管理的工具会自动帮忙完成的。
,