Go下載安裝及切換不同版本的實現(xiàn)方法
一、下載安裝

Go提供了Windows、MacOS(ARM64) 和 MacOS(x86-64)、Linux版本,也可以下載源碼自己編譯安裝。
Linux && MacOS
下載壓縮包
解壓到指定目錄,如:/usr/local
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
把go的bin目錄添加到環(huán)境變量
在 ~/.zshrc或~/.bashrc中添加如下行 export PATH=$PATH:/usr/local/go/bin
使用環(huán)境變量立即生效
source ~/.zshrc 或 source ~/.bashrc
測試go是否安裝成功
go version
Windows
直接雙擊 .msi文件進行引導(dǎo)安裝
安裝完成后打開 cmd 或 power shell 輸入 go version 驗證安裝是否成功
二、如何切換Go版本?
方法一
直接下載不同版本的壓縮包,使用軟連接指向不同的版本
下載完壓縮包,解壓到其他目錄,如:
tar -C ~/Downloads -xzf go1.21.9.linux-amd64.tar.gz
把go目錄重命名為 go1.21.9
mv go go1.21.9
新建一個go全局目錄,如:go_version
mkdir ~/go_version
做一個軟鏈接指向go1.21.9版本
ln -s ~/Downloads/go1.21.9 ~/go_version/go
把~/go_version/go/bin目錄加到到環(huán)境變量
export PATH=~/go_version/go/bin:$PATH
驗證是否安裝成功
go1.21.9 version
擴展:此法為切換軟件的通法,其他軟件也適用。
方法二
使用go install 命令安裝其他版本
已經(jīng)安裝go的情況下(例如當(dāng)前版本為:1.22.2),可以通過go install 來安裝其他版本
go install golang.org/dl/go1.22.1@latest go1.22.1 download
go install 命令會把go1.22.1版本作為1.22.2的可執(zhí)行安裝包,存放在 ~/go/bin下面

再去用go1.22.1 download 則會下載1.22.1的源碼,放到~/sdk下面

此時就可以用go1.22.1 version來驗證是否安裝成功了
為什么可以直接敲go1.22.1呢?實際上執(zhí)行的是/go/bin/go1.22.1這個二進制文件,而/go/bin又加入了PATH變量,所以能執(zhí)行。

sdk是不能刪除的,go1.22.1會讀取sdk里面的源碼,刪除后會提示sdk沒有下載。
方法三
使用gvm來切換
gvm全稱:Go Version Manager (GVM)是一個用于管理Go環(huán)境的開源工具。它支持安裝多個Go版本,并使用GVM “pkgsets” 管理每個項目的模塊。
GVM(與Ruby中的RVM一樣)最初是由Josh Bussdieker開發(fā)的,它允許為每個項目或項目組創(chuàng)建開發(fā)環(huán)境,分離不同的Go版本和包依賴關(guān)系,以提供更大的靈活性并防止版本問題。
安裝gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
命令解析:
- -s -S 連用表示禁用進度條但可以顯示錯誤信息
- -L 表示重定向跟隨
- <(...) 此處為<(curl ...) ,此語法表示curl的執(zhí)行結(jié)果被視作文件
- bash < 表示拿到curl的執(zhí)行結(jié)果作為標(biāo)準(zhǔn)輸入傳給bash
通過gvm安裝go
gvm install go1.22.2
通過gvm切換go版本
gvm use go1.22.2
列出所有通過gvm安裝的go版本
gvm list
列出所有可用的線上go版本
gvm listall
卸載go版本
gvm uninstall go1.22.2
完全移除gvm及其所有安裝的go版本和依賴包
gvm implode如果卸載失敗,直接 rm -rf ~/.gvm
管理go的依賴包
pkgset允許獨立管理不同的Go包集及其版本,從而更容易在不同的項目依賴關(guān)系之間切換。
// 創(chuàng)建包集合 gvm pkgset create [name] // 選擇包集合 gvm pkgset use [name] // 列出創(chuàng)建的包集合 gvm pkgset list // 刪除包集合 gvm pkgset delete [name]
切換到指定的包集后,后續(xù)使用go build、go run命令時會把下載的包安裝到包集目錄

其他gvm命令
- 打印gvm版本
gvm version
- 獲取gvm最新版本
gvm get
- 打印幫助信息
gvm help
gvm 原理
其內(nèi)部核心也是使用軟連接,通過指向不同的版本使用不同的環(huán)境變量
后面再進行源碼分析
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go?interface?接口的最佳實踐經(jīng)驗分享
go?的接口在go的編程里面用的十分頻繁,尤其是空接口的使用,因為有了接口,才使得Go語言變得異常的強大,今天給大家介紹下Go?interface?接口的最佳實踐經(jīng)驗分享,感興趣的朋友一起看看吧2022-04-04
Golang的os標(biāo)準(zhǔn)庫中常用函數(shù)的整理介紹
這篇文章主要介紹了Go語言的os標(biāo)準(zhǔn)庫中常用函數(shù),主要用來實現(xiàn)與操作系統(tǒng)的交互功能,需要的朋友可以參考下2015-10-10
Go語言kube-scheduler深度剖析與開發(fā)之pod調(diào)度
這篇文章主要為大家介紹了Go語言kube-scheduler深度剖析與開發(fā),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04

