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 等指令也是類似了。
如圖: