go mod
go modules
—go modules是Go语言的项目依赖管理工具(依赖包等管理),淘汰现有的GOPATH的使用模式。如果项目里有go.mod文件,可以看到里面包含了项目依赖包的路径。如果没有,则可以利用go mod init初始化。
- require
列出了项目所需要的各个依赖库以及它们的版本。比如,v0.13.0表示版本号:
require{
github.com/apache/thrift v0.13.0
}
- exclude
—如果想在项目中跳过某个依赖库的某个版本,可以使用该字段
exclude{
github.com/apache/thrift v0.13.0
}
- go mod常用命令
1.go mod init name:初始化并写入一个新的go.mod文件到当前目录,如果存在则会自动跳过命令
2.go mod download:下载依赖包到本地
3.go mod tidy:增加缺少的包,删除无用的包(并且会下载新增的依赖包)
常见问题
- 项目下下来了,import的全部提示无效“Cannot resolve symbol ‘go-redis’ ”
- 项目是否包含go.mod文件,如果没有,则要初始化。
go mod init go.mod //创建一个go.mod文件,记住一定要加上go.mod,否则会创建失败
go mod tidy //会自动补全require并下载对应的依赖包
- 看下External Libraries下的Go Modules是否有依赖包。如果没有,手动下载
go mod download //下载项目中依赖的包(go.mod文件中,require部分)
- 项目无法导入github上面的包
- 确认包路径是否生效及是否有权限访问,直接把链接贴到浏览器看能否打开
- 如果能打开,再看下是否设置了GOPROXY,没有设置或者设置了国外的代理都有可能导致无法下载
关于项目的依赖包管理
主要有两种方式,一是:GOPATH,另一种是Modules方式
- GOPATH
在1.5版本之前,go的所有依赖包都放在固定地址GOPATH(环境变量设置),没有版本控制。这种方式在多个项目依赖不同版本的package的时候容易冲突。 - Modules机制
在1.11版本推出了modules机制,简称mod。在项目根目录下执行命令来查询当前项目的模式,如果是on,则表示是mod模式管理。如果是mod模式,则可以利用上述的go mod命令行来管理。go env GO111MODULE
goland在settling里面设置。