欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Go module学习笔记

程序员文章站 2022-03-21 16:20:56
本文是go官网关于module文章的学习笔记,包含module的使用、创建并发布module版本及升级为v2版本等操作。 ......


一 go module 常用命令

模块维护:go mod command arguments
创建模块:go mod init example.com/hello
清除无用依赖: go mod tidy

测试packages:go test [build/test flags] [packages]
测试当前目录*_test.go:go test 运行当前文件夹下的_test.go文件

列出packages或模块:
go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

列出模块所有的依赖(包括间接依赖):go list -m all

增加并安装依赖:
go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]

升级minor版本get get packages

升级依赖module的主版本:
import中加入语义主版本号,比如:import quotev3 "rsc.io/quote/v3"

二 发布go module

语义版本:
语义版本由vmajor.minor.patch构成,当新发布版本公共api不兼容已发布版本时,新增major主版本号;当新增函数等兼容已发布版本时,增加minor;不改变api和则依赖时,比如修复bug,增加patch。
v0为初始不稳定版本,v1为第一个稳定版本。
给本地分支打标, 默认标签是打在最新提交的commit上:git tag v0.1.0
将本地分支标签推送到远端:git push origin v0.1.0

三 发布v2及以上版本

模块的v2及以上版本必须带有有不同的模块导入路径,路径带上major version。
在模块下新建v2子目录,将模块下所有的*.go文件全部铐入v2目录,将go.mod拷入v2目录,并修改module名称。
修改模块名称:
go mod edit -module github.com/killianxu/gopher/v2 v2/go.mod

将我们项目依赖的模块全改成v2版本:
find . -type f -name '*.go' -exec sed -i -e 's,github.com/my/project,github.com/my/project/v2,g' {} \;
find查找指定文件,.表示本目录及子目录,-type表示文件类型(f普通文件),-name表示文件名,-exec执行指令,-exec和{}结合表示匹配的所有文件[5]。
sed是流编辑器,用于文本处理,sed读入文件行进缓冲区,处理完成输出到屏幕,然后处理下一行。
命令用法:sed [options] 'command' file(s)
-e可以在同一行里执行多条命令,-i直接更改原文件。command中s表示替换,g表示对所有行进行替换。
git tag v2.0.0
将本地分支标签推送到远端:git push origin v2.0.0

参考文献

[1] using go modules.https://blog.golang.org/using-go-modules
[2] command go.https://golang.org/cmd/go/
[3] publishing go modules.https://blog.golang.org/publishing-go-modules
[4] go modules: v2 and beyond.https://blog.golang.org/v2-go-modules
[5] find命令.https://man.linuxde.net/find
[6] sed命令.https://man.linuxde.net/sed