Go 语言的多版本管理是为了解决不同项目或者同一项目的不同依赖包版本之间的冲突问题。
多版本管理
- 安装 Go
- 安装好了 git
运行 go install golang.org/ dl / go 命令将下载特定 Go 版本的包装器。
$ go install golang.org/dl/go<version>@latest
通过包装器,下载特定 Go 版本和它对应的工具链。
$ go<version> download
例如安装 1.18.9 版本,可以这样执行。
$ go install golang.org/dl/go1.18.9@latest
$ go1.18.9 download
如图:
完成代码:
(base) PS D:\goWork\go-test> go install golang.org/dl/go1.18.9@latest
(base) PS D:\goWork\go-test> go1.18.9 download
Downloaded 0.0% ( 16384 / 155250028 bytes) ...
Downloaded 24.8% ( 38518656 / 155250028 bytes) ...
Downloaded 40.5% ( 62848592 / 155250028 bytes) ...
Downloaded 81.3% (126238272 / 155250028 bytes) ...
Downloaded 100.0% (155250028 / 155250028 bytes)
Unpacking C:\Users\{USER}\sdk\go1.18.9\go1.18.9.windows-amd64.zip ...
Success. You may now run 'go1.18.9'
(base) PS D:\goWork\go-test> go1.18.9 version
go version go1.18.9 windows/amd64
(base) PS D:\goWork\go-test> go version
go version go1.20.5 windows/amd64
图中看到,默认go是1.20版本,我们又安装了1.18版本,相互独立。
使用
以下是我的测试项目原始go mod
module example.com/m/v2
go 1.20
require golang.org/dl v0.0.0-20230629133730-ba866d363753 // indirect
我们删除文件重新使用go1.18.9初始化go mod
(base) PS D:\goWork\go-test> go1.18.9 mod init example.com/m/v2
go: creating new go.mod: module example.com/m/v2
(base) PS D:\goWork\go-test> cat go.mod
module example.com/m/v2
go 1.18
此时我们可以看到go.mod文件,版本号变了。
那么剩下的go build ,go run 等命令也是类似了。
如图: