輕松管理多個Go版本之g工具安裝與使用方法
前言
Golang 的版本控制工具 g 是一個用于方便地管理和切換 Go 語言版本的命令行工具。它讓用戶可以輕松地安裝、卸載和切換不同版本的 Go,從而更好地適應(yīng)不同項目的需求。類似于Python的pyenv或Node.js的nvm,是專為Go設(shè)計的輕量級版本管理工具。其Github releases鏈接如下:https://github.com/voidint/g/releases

同時支持windows、linux、mac三個系統(tǒng)。
一、安裝g工具
安裝g工具可以使用兩種方式來安裝
- 手動安裝:根據(jù)自己的電腦系統(tǒng)和CPU架構(gòu)選擇對應(yīng)的壓縮包,下載到本地。并解壓到自己想要放置的文件
- 自動化安裝:根據(jù)自己的系統(tǒng)來執(zhí)行對應(yīng)的安裝腳本
Linux | Mac 用戶
自動化安裝
通過執(zhí)行install.sh 代碼,自動執(zhí)行下載及環(huán)境配置
# 建議安裝前清空`GOROOT`、`GOBIN`等環(huán)境變量
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ cat << 'EOF' >> ~/.bashrc
# 可選。檢查g別名是否被占用
if [[ -n $(alias g 2>/dev/null) ]]; then
unalias g
fi
EOF
$ source "$HOME/.g/env"
手動安裝
創(chuàng)建G_HOME目錄,作者推薦使用~/.g
將下載的包解壓到~/.g./bin目錄,設(shè)置對應(yīng)的環(huán)境變量
$ cat >~/.g/env <<'EOF'
#!/bin/sh
# g shell setup
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/bin:${GOROOT}/bin:$PATH"
export G_MIRROR=https://golang.google.cn/dl/
EOF
啟動環(huán)境變量
$ source ~/.bashrc # 或source ~/.zshrc
Windows用戶
自動安裝
windows想要進(jìn)行自動安裝,需要使用powershell 配置管理員權(quán)限使用。
$ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex
手動安裝-官方教程(裝到用戶目錄下)
- 創(chuàng)建目錄
mkdir ~/.g/bin - 下載release的 windows 版本的二進(jìn)制壓縮包, 解壓之后放到
~/.g/bin目錄下 - 默認(rèn)二進(jìn)制文件名是 g.exe, 如果你已經(jīng)用 g 這個命令已經(jīng)用作為 git 的縮寫,那么你可以把 g.exe 改為其他名字,如 gvm.exe
- 執(zhí)行命令
code $PROFILE, 這個命令會用 vscode 打開默認(rèn)的 powershell 配置文件 - 在 powershell 的默認(rèn)配置文件中加入如下內(nèi)容
$env:GOROOT="$HOME\.g\go"
$env:Path=-join("$HOME\.g\bin;", "$env:GOROOT\bin;", "$env:Path")
- 再次打開 powershell 終端,就可以使用 g 或者 gvm 命令了
手動安裝-非C盤配置
創(chuàng)建自己想放置的目錄 如:
D:\Golang\g下載release的 windows 版本的二進(jìn)制壓縮包, 解壓之后放到
D:\Golang\g\bin目錄下可自定義名稱,如改成
gvm.exe后,之后使用命令則以gvm開頭。配置環(huán)境變量:跟官方代碼邏輯一樣,主要有三個點(diǎn),如本次的例子,通過點(diǎn)擊環(huán)境變量的配置
- G_HOME = D:\Golang\g
- GOROOT = %G_HOME%\go
- Path中配置 %GOROOT%\bin 這里是為了能在終端中使用go
- 設(shè)置 G_EXPERIMENTAL=true(**重要!**否則默認(rèn)會安裝到 ~/.g)
CMD 終端測試
g -v查看版本
二、使用方法
配置鏡像
國內(nèi)直連官網(wǎng)下載存在困難,建議配置鏡像進(jìn)行下載。
環(huán)境變量中配置G_MIRROR為如下任意地址即可
- Go 官方鏡像站:https://golang.google.cn/dl/
- 阿里云開源鏡像站:https://mirrors.aliyun.com/golang/
- 南京大學(xué)開源鏡像站:https://mirrors.nju.edu.cn/golang/
- 華中科技大學(xué)開源鏡像站:https://mirrors.hust.edu.cn/golang/
- 中國科學(xué)技術(shù)大學(xué)開源鏡像站:https://mirrors.ustc.edu.cn/golang/
設(shè)置后驗證查看
g env

常用命令
查詢當(dāng)前可供安裝的stable狀態(tài)及所有的 go 版本
# stable 版本 g ls-remote stable # 所有遠(yuǎn)程版本 g ls-remote # 查看本地已安裝版本 g ls # 安裝目標(biāo) go 版本 g install 1.24.3 # 切換到已安裝go版本 g use 1.24.3 # 卸載指定版本 g uninstall 1.24.3
g 自身相關(guān)命令
# 清空 go 安裝包文件緩存 g clean # 查看 g 版本信息 g version 1.5.0 # 更新 g 軟件本身 g self update # 卸載 g self uninstall
總結(jié)
通過本文的詳細(xì)介紹,我們了解到 g 是一個非常強(qiáng)大的工具,能夠極大地簡化 Go 語言版本管理的過程。以下是本文的重點(diǎn)總結(jié):
安裝方式:
- 自動化安裝:適用于希望快速上手且不需要自定義配置的用戶。只需執(zhí)行簡單的命令即可完成安裝。
- 手動安裝:提供了更大的靈活性,允許用戶根據(jù)自己的需求選擇安裝路徑和環(huán)境變量設(shè)置。
跨平臺支持:無論是 Linux、macOS 還是 Windows 用戶,都可以找到適合自己的安裝和配置方法。
常用命令:
- 使用 g ls-remote 查看可用的 Go 版本,并使用 g install 安裝所需版本。
- 切換不同版本的 Go 可以通過 g use 命令實現(xiàn),而卸載不再需要的版本則可以使用 g uninstall。
g 自身也提供了諸如 g clean 清理緩存、g version 查看當(dāng)前版本以及 g self update 更新自身等功能。
鏡像源配置:對于國內(nèi)用戶來說,合理配置鏡像源(如使用阿里云或中科大等鏡像站)可以顯著提高下載速度,確保更流暢的開發(fā)體驗。
環(huán)境變量配置:正確配置環(huán)境變量是保證 g 能夠正常工作的關(guān)鍵步驟。無論是通過自動腳本還是手動配置,都應(yīng)確保 GOROOT 和 PATH 等重要變量被正確設(shè)置。
社區(qū)資源:除了本文提供的信息外,官方 GitHub 倉庫也是獲取最新功能介紹和技術(shù)支持的重要來源。
到此這篇關(guān)于輕松管理多個Go版本之g工具安裝與使用方法的文章就介紹到這了,更多相關(guān)g工具管理多個Go版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言中實現(xiàn)打印堆棧的errors包的用法詳解
因為Go語言提供的錯誤太簡單了,以至于簡單的我們無法更好的處理問題,所以誕生了很多對錯誤處理的庫,github.com/pkg/errors是比較簡潔的一樣,本文就來聊聊它的具體用法吧2023-07-07
go gin+token(JWT)驗證實現(xiàn)登陸驗證
本文主要介紹了go gin+token(JWT)驗證實現(xiàn)登陸驗證,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
深入探究Golang中l(wèi)og標(biāo)準(zhǔn)庫的使用
Go?語言標(biāo)準(zhǔn)庫中的?log?包設(shè)計簡潔明了,易于上手,可以輕松記錄程序運(yùn)行時的信息、調(diào)試錯誤以及跟蹤代碼執(zhí)行過程中的問題等。本文主要來深入探究?log?包的使用和原理,幫助讀者更好地了解和掌握它2023-05-05
Go語言中io.Reader和io.Writer的詳解與實現(xiàn)
在Go語言的實際編程中,幾乎所有的數(shù)據(jù)結(jié)構(gòu)都圍繞接口展開,接口是Go語言中所有數(shù)據(jù)結(jié)構(gòu)的核心。在使用Go語言的過程中,無論你是實現(xiàn)web應(yīng)用程序,還是控制臺輸入輸出,又或者是網(wǎng)絡(luò)操作,不可避免的會遇到IO操作,使用到io.Reader和io.Writer接口。下面來詳細(xì)看看。2016-09-09

