1、关于go modules
- 1.1 go modules 是go1.11 新加的特性
如今已有go 1.13.4 了本人用了就是最新版的
- 1.2关于modules 官方定义
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其余模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
- 1.3 使用modules 的配置
- 配置GO111MODULE
GO111MODULE 有三个值 off , on,auto
- 配置GO111MODULE
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种经过vendor目录或者GOPATH模式来查找。 GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种状况下能够分为两种情形:
- 1.4 本人配置
export GO111MODULE=auto
由于之前没有使用 ,将来兼容之前的项目,暂设成auto
2、go mod 的一些命令
命令 | 说明 |
---|---|
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod |
graph | print module requirement graph (打印模块依赖图) |
init | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺乏的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain why packages or modules are needed(解释为何须要依赖) |
3、如何使用 go mod
- 3.1 简单使用
mkdir hello cd hello go mod init hello # 此时会出现一个hello下会出现一个 go.mod 目录 # 须要下载 全部第三方包时 go mod download # 下载第三包能够直接使用 go get need_pkg # 下载好的依赖 和 版本 会加入到 go.mod 里面, # 下载好的第三包 会放在到$GOPATH/pkg/mod 中 # 没有设置GOPATH的话 下载好的第三方包会放在~/go/pkg/mod # 若是你想放在当前目前能够执行以下命令 go mod vendor # 此时你的包就会出如今vendor下了,意思是将依赖包放在vendor中
- 3.2 关于依赖升级
go list -m -u all 来检查能够升级的package go get -u 升级全部依赖 go get -u need-pack 升级指定的依赖
- 3.3 关于依赖打包
go build -ldflags="-s -w" -o app ./main.go # -ldflags="-s -w" 压缩程序
- 3.4 github 拉取 他人含有go.mod的项目时,下载全部第三方包
go mod download
- 3.5 关于如何使用自定义包
hello |--conf |-conf.go |-main.go |-go.mod 如何导入conf 包呢? 先查看go.mod 中的module 后的定义的module_name 在导入时 直接使用module_name/conf 便可
4、goland的配置
goland 升级到最新的,旧的goland 版本时不支持go mod, 在preferences -> go -> Go Modules(vgo) 给Enable Go Modules (vgo) Integration 打勾勾就行
上图的那个圈起来的地方必定要勾上, Enable Go Modules(vgo) 启用modules 模式 verdoring mode 会使用vendor 文件夹中的包(不用打勾,打勾意味着依赖包都使用vendor 目录里面的.)