go使用voidint实现版本切换

1,下载版本

https://github.com/voidint/g/releases/tag/v1.8.0

2,查看版本

bash 复制代码
g --version
g version 1.8.0
Built:         2025-07-11 13:24:15
Git branch:    master
Git commit:    a82e89cc
Go version:    go1.20.14
OS/Arch:       windows/amd64
Experimental:  false

3,设置国内镜像

bash 复制代码
setx G_MIRROR "https://golang.google.cn/dl/"
setx G_EXPERIMENTAL "true"

4,把 g.exe 所在目录加到环境变量

bash 复制代码
$env:Path += ";$HOME\.g"
[Environment]::SetEnvironmentVariable("Path", $env:Path, "User")

5,下载指定的版本并使用

bash 复制代码
# 下载
g install 1.24.5 

# 使用
g use 1.24.5

# 查看版本
go version

常用命令

bash 复制代码
g ls-remote          # 查看所有可安装版本
g install 1.24.5      # 安装 go1.24.5
g install 1.25.5      # 安装 go1.25.5

g ls                  # 查看已安装
g use 1.24.5          # 一键切到 1.24.5
g use 1.25.5          # 一键切到 1.25.5

go version            # 验证

一次性配置:永久自动切换(PowerShell 执行)

1) 先清理旧的乱配置(避免冲突)

bash 复制代码
# 删掉旧的 user Path 里所有带 .g 的行(手动也行)

[Environment]::SetEnvironmentVariable("Path", ($env:Path -split ';' | Where-Object { $_ -notmatch '\.g' }) -join ';', "User")

2)创建永久软链接(管理员 PowerShell,只做一次)

bash 复制代码
# 删掉旧的 current/go(如果有)
Remove-Item "$env:USERPROFILE\.g\versions\current" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.g\go" -Force -ErrorAction SilentlyContinue
bash 复制代码
# 建两个软链接:versions/current → 1.24.5;.g/go → current
New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\.g\versions\current" -Target "$env:USERPROFILE\.g\versions\1.24.5"
New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\.g\go" -Target "$env:USERPROFILE\.g\versions\current"

3)配置永久环境变量(核心!以后永远不用改)

新建用户变量 GOROOT

Environment::SetEnvironmentVariable("GOROOT", "$env:USERPROFILE.g\go", "User")

把 %GOROOT%\bin 加到用户 Path 最前面

newPath="newPath = "newPath="env:GOROOT\bin;$env:Path"

Environment::SetEnvironmentVariable("Path", $newPath, "User")

实现自动切换版本

Linux 下配置volidint

下载地址

bash 复制代码
https://github.com/voidint/g/releases/download/v1.8.0/g1.8.0.linux-arm64.tar.gz

一、解压 g(你已下载,直接执行)

1. 先创建目录

bash 复制代码
mkdir -p ~/.g/bin

2. 解压到~/.g/bin

bash 复制代码
tar -zxvf g1.8.0.linux-amd64.tar.gz -C ~/.g/bin

3. 赋予执行权限

bash 复制代码
chmod +x ~/.g/bin/g

二、配置环境变量(自动切换版本核心)

打开配置文件(bash 通用)

bash 复制代码
nano ~/.bashrc

在文件 最后一行 粘贴下面内容

bash 复制代码
# g version manager
export G_HOME=$HOME/.g
export PATH=$G_HOME/bin:$PATH

# Go 自动切换软链接
export GOROOT=$G_HOME/go
export PATH=$GOROOT/bin:$PATH

保存退出

Ctrl+O → 回车 → Ctrl+X

立即生效

bash 复制代码
source ~/.bashrc

三、验证 g 是否安装成功

bash 复制代码
g --version

四、配置国内镜像(解决下载超时)

bash 复制代码
echo "export G_MIRROR=https://golang.google.cn/dl/" >> ~/.bashrc
source ~/.bashrc

五、安装 Go 1.24.5

bash 复制代码
g install 1.24.5

六、切换版本(自动生效,不用改 PATH)

bash 复制代码
g use 1.24.5

七、查看 Go 版本(自动对应)

bash 复制代码
go version
go version go1.24.5 linux/amd64
相关推荐
第九序言T6 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
龙亘川7 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人7 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas1008 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
专注仿真8 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy19 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫129 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
心疼你的一切10 小时前
Python自动发邮件实战定时发报表
大数据·开发语言·python
Wang's Blog11 小时前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友
中科三方11 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php