以下都是在 mac (其他系統(tǒng)原理都是一樣的)下的描述:
安裝 go 的 sdk 后,一般 go 的文件夾會(huì)放在/usr/local/go 目錄中,后面需要升級(jí)或安裝特定版本時(shí)只需要下載安裝包然后覆蓋即可;
最近遇到的問題:dockerfile 中構(gòu)建鏡像的 go 版本低于項(xiàng)目使用的 go 版本而無法打包;
解決方式,將/usr/local/go 目錄中都 go 文件夾改名為 go+版本號(hào),例如“go_1.22.4” 目的是為了為以后更改版本更方便,然后再裝新的版本,就又會(huì)在/usr/local/go 中創(chuàng)建新的 go 目錄;需要升級(jí)時(shí)再把“go_1.22.4”改回 go 另外一個(gè)重命名即可。
原理:本質(zhì)上編譯器在查找 go 的 sdk 是,會(huì)有一個(gè)類似 Windows 上系統(tǒng) path (系統(tǒng)環(huán)境變量)的地方,指定了 go sdk 的位置,只要能找到對應(yīng)的文件就能執(zhí)行相應(yīng)的 sdk;
換個(gè)思路是不是只要將系統(tǒng)環(huán)境變量指定 go sdk 的路徑創(chuàng)建一個(gè)軟連接到包含 go sdk 的文件夾就可以了,也就是可以快速的切換版本;
優(yōu)化方法,寫一個(gè)腳本??梢酝ㄟ^簡單的命令讓系統(tǒng)環(huán)境變量,靈活的指定不同的 go sdk 目錄就可以切換 go 的版本。當(dāng)然有一些控制版本的工具,可以實(shí)現(xiàn)奈何國內(nèi)的網(wǎng)絡(luò)拉鏡像實(shí)在是太慢了,有時(shí)候魔法也不好使。