版本命名定范
版本号格式为v<major>.<minor>.<patch>
,如v1.2.3
。当有不兼容的改变时,需要增加major版本号,如v2.1.0
。
Go module规定,如果major版本号大于1,则major版本号需要显式地标记在module名字中,如module github.com/my/mod/v2
。这样做的好处是Go module 会把module github.com/my/mod/v2
和 module github.com/my/mod
视做两个module,他们甚至可以被同时引用
go get
go get借助代码管理工具(例如:git,svn,hg等等)从远程拉取代码和依赖包,并且自动完成编译和安装。
可以这么理解,go get获取代码到本地的时候编译器会通览一遍代码,得出需要哪些依赖包。如果本地没有这些依赖包,会从远程拉取这些依赖包到本地。然后完成编译。
go get 命令目前支持的有BitBucket、GitHub、Google Code 和 Launchpad。 go 工具会自动根据不同的域名调用不同的代码管理工具。
-d 只下载不安装
-f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包,即使主包没有更新,也会更新依赖包
-v 显示执行的命令
go get和go install区别
go get
和 go install
都是 Go 语言中用于包管理的命令,但它们的作用不太一样。
go get
命令用于下载并安装指定的包及其依赖项,然后将它们放在 $GOPATH
目录下的对应位置,以便其他项目可以引用它们。如果未指定版本,则会安装最新版本。如果包已经存在,则会更新它到最新版本。如果包安装失败,可能会导致其他程序的问题。
go install
命令用于编译并安装指定的包。它会先执行 go build
命令来编译包,然后将生成的可执行文件放在 $GOBIN
目录下,以便直接执行该文件。如果包已经存在,则会将其更新到最新版本。如果编译失败,则不会安装该包
因此,go get
的主要作用是下载并安装包及其依赖项,而go install
的主要作用是编译并安装包。一般来说,在安装一个新包时,应该使用 go get
命令,而在编译一个包时,应该使用go install
命令
go mod命令
命令 | 作用 |
---|---|
go mod init | 初始化当前文件夹,创建 go.mod 文件 |
go mod tidy | 增加缺少的包,删除无用的包 |
go mod download | 下载依赖包到本地(默认为 GOPATH/pkg/mod 目录) |
go mod edit | 编辑 go.mod 文件 |
go mod graph | 打印模块依赖图 |
go mod vendor | 将依赖复制到 vendor 目录下 |
go mod verify | 校验依赖 |
go mod why | 解释为什么需要依赖 |
snapshot依赖问题
java开发过程中,我们经常需要snapshot版本来进行联调。对应go开发,可以使用go get xxxx@分支名
的方式,达到不用修改版本号的目的。
联调完成后,再次执行go get xxx@latest
Mod Cache 路径
下载的模块内容会缓存在 $GOPATH/pkg/mod 目录中:
使用以下命令可清空缓存:
go clean --modcache