Go Module
上一篇记录了Go语言的基础知识。这里对Go的模块管理进行介绍。
使用Module
Module 初始化
使用go mod init xx
来初始化创建go.mod
文件。
注意在$GOPATH/src
之外的目录调用go mod init命令,且未设置环境变量GO111MODULE时,会出现错误,需要手动激活export GO111MODULE=on
。这里我们创建应用module-test
,使用该应用进行测试。命令如下:
1 | liangtongdeiMac:~ liangtong$ cd /Users/liangtong/Documents/go/src/module-test |
此时当前应用目录下,会出现一个go.mod
文件,此时文件包含一行内容
1 | module modtest |
添加依赖
新建hello.go
文件,添加代码,这里我们代码中依赖一个github上的模块,如下
1 | package main |
添加测试文件hello_test.go
,代码如下
1 | package main |
在应用module-test
根目录,执行 go test
命令,命令行如下
1 | liangtongdeiMac:module-test liangtong$ go test |
此时 go.mod
文件的内容如下
1 | module modtest |
另外,目录中多了一个go.sum
文件,内容记录的是一些主要的版本信息,内容如下
1 | github.com/liangtongdev/go-test v1.2.0 h1:+nsknGYi0fRJ2UPCoHrp8ehNM7Prf0/bCFeUkTHNXYg= |
更新依赖
在go.mod
文件中,会记录模块的版本信息,例如require github.com/liangtongdev/go-test v1.2.0
中的 v1.2.0
版本。默认情况下,获取的是最新的版本
1 | go get github.com/liangtongdev/go-test |
当然如果需要特定的版本,可以在命令中指定版本信息
1 | go get github.com/liangtongdev/go-test@v1.2.0 |
移除无用的依赖
可以通过命令go list -m all
查看go.mod
中所有的依赖模块
1 | go list -m all |
通过go mod tidy
命令,移除无用的依赖包
1 | go mod tidy |
创建Module
这里我们借助于github
来创建自己的module,首先在github上创建一个代码仓库。编写自己的代码,测试。
一切正常的时候,我们创建tag并发布
1 | go mod init github.com/liangtongdev/go-test |
其中版本信息格式为vMAJOR.MINOR.PATCH
- MAJOR 变更:不能兼容前期版本时
- MINOR 变更:可以向后兼容,比如添加新的函数/方法/结构体字段时
- PATH 变更:bug修复
经过以上步骤,恭喜你发布成功了。接下来可以通过使用Module来验证下自己的模块!
本文标题:Go Module
文章作者:梁通
发布时间:2019-11-14
最后更新:2020-08-20
原始链接:http://www.liangtong.site/2019/11/14/go_20191114_note_mod/
版权声明:Copyright© 2016-2020 liangtong 版权所有