使用Go Version Manager(GVM)

如果你希望更方便地管理多个Go版本,可以考虑使用Go Version Manager(GVM)。GVM是一个用于管理Go环境的开源工具,支持安装、卸载和切换多个Go版本。

window11上安装和使用GVM或G

1、方案 A:voidint/g 单 exe(轻量、软链切换)

它命令行叫 g,有些发行叫 gvm,本质一样。 最新版本:V1.8.0 Jul 10, 2025
1)下载
去 https://github.com/voidint/g/releases。 g1.8.0.windows-amd64.zip 解压后得到的是【g.exe】
不管是CMD、还是powershell,都要以管理员身份运行!!!
不然,会出现【Symlink…A required privilege is not held by the client.】,就是无权创建软链,导致GOROOT指向的go目录不存在。
安装:
把”g.exe”复制放到【D:\g】目录下,然后配置按以下环境变量配置。

2)环境变量(系统变量)

  1. #参考 https://github.com/voidint/g/blob/master/README_CN.md
  2. # 配置下G_MIRROR,为了下载go的时候不翻墙
  3. G_MIRROR=https://golang.google.cn/dl/
  4. # 开启所有的实验特性
  5. G_EXPERIMENTAL=true
  6. # 按照惯例,g 默认会将~/.g目录作为其家目录。若想自定义家目录(Windows 用户需求强烈),可使用该环境变量切换到其他家目录
  7. G_HOME=D:\g
  8. # 配置GOROOT,这个指向g/gvm工作目录下的go,g安装go版本后,会在这个路径下建立一个软链到versions目录下的指定版本,靠这个方法来控制当前的go版本,**如果安装g/gvm之前已经安装过go了,需要修改GOROOT这个环境变量**
  9. GOROOT=%G_HOME%\go
  10. # 配置环境变量
  11. # 编辑系统变量中的【PATH】变量
  12. %GOROOT%\bin

3)管理员 CMD/PowerShell 跑(软链要权限)

  1. g -v
  2. g install 1.21.13
  3. g install 1.25.14
  4. g install 1.19.13
  5. g use 1.21.13
  6. go version

g use 会把 %G_HOME%\go 重指到 %G_HOME%\versions\1.21.0 之类。
若报 “Symlink … privilege not held”,要么用管理员,要么 Win11 设置→开发者模式开“创建符号链接”,再跑。

gvm的安装&版本切换 - 图1

gvm的安装&版本切换 - 图2


2、方案 B:Windows 版 gvm 不推荐

适用 PowerShell / Win11,nvm 风格。

1)安装gvm 不推荐(PowerShell 管理员)

  1. https://gitee.com/voidint/gvm
  2. 显示 7年前的了

尝试安装到D:/gvm(先建变量再跑脚本,若脚本读取 GVM_HOME 即可生效;不读取那就装完再改):

  1. # 管理员或当前用户都行,用户变量更稳
  2. [System.Environment]::SetEnvironmentVariable("GVM_HOME","D:\gvm","User")
  3. # 然后新开 PowerShell 跑安装
  4. irm https://raw.githubusercontent.com/David-Coach-Dev/gvm/main/install-nvm-style.ps1 | iex

装完再改:

  1. gvm version
  2. echo $env:GVM_HOME
  3. gvm list
  4. 打开环境高级配置,直接复制【AppData\gvm】到【D:\gvm】

手动下载指定版本

  1. https://golang.google.cn/dl/
  2. 例如下载:go1.21.13.windows-amd64.zip 解压并且放到 D:\gvm\versions\go1.21.13 下

2)常用命令

  1. gvm listall # 可装版本清单
  2. gvm install 1.21.0 # 装指定版本
  3. gvm install latest # 装最新
  4. gvm use 1.21.0 # 当前 shell 切到 1.21
  5. gvm list # 已安装
  6. gvm uninstall 1.20.5 # 删

项目根目录放 .go-version 写 1.21.0,进目录可自动切(安装时启用了 auto-switch 才生效)。

3)验证

  1. where go
  2. go version
  3. go env GOROOT

gvm use 后这两处应指向 gvm 管理的版本目录,而不是老 C:\Program Files\Go。

注意:PowerShell 执行策略可能拦脚本,先 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned(管理员)再跑。


3、常见坑

  • where go 出现多个路径:旧 C:\Program Files\Go\bin 没清,gvm 切了但 PATH 老条目在前 → 系统环境变量 PATH 只留一个 GOROOT\bin。
  • 开始菜单启动 GoLand 不继承终端 gvm → 用终端 gvm use 后在该终端敲 goland/goland64.exe 启动,或直接在 IDE GOROOT 写绝对路径。
  • 软链权限失败 → 管理员终端,或 Win11 开发者模式开符号链接。
  • 用 msi 装过官方 Go 又用 gvm → 先卸掉系统 GOROOT/PATH 里的 msi 残留,避免两套打架。
  • WSL 里另装 moovweb/gvm 也能用,但那只管 WSL 内 Linux Go,不管 Windows GoLand 调试;Windows 项目别混用。

mac、linux上 安装GVM:

访问GVM的GitHub页面或根据官方文档安装GVM。

通常,安装命令类似于:

  1. cd /root
  2. bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

以下的【gvminstall.sh】我已经重新封装(即换成了gitee的git源)原:https://github.com/moovweb/gvm

  1. cd /root
  2. wget http://www.taiww.com/other/go/gvminstall.sh
  3. bash gvminstall.sh
  4. chmod -R 755 /root/.gvm
  5. gvm -v

gvm的安装&版本切换 - 图3

注意:系统要系统有 curl

  1. yum -y install curl
  2. 或者:从别的服务器COPY来,路径目录为:/usr/bin/curl

使用GVM安装Go 1.13.10:

安装完成后,使用GVM安装Go 1.13.10版本:

  1. gvm install go1.13.10

gvm的安装&版本切换 - 图4

如果卡住,得开VPN。或者 多尝试几次就成功了。

列出所有版本:

  1. gvm list

切换版本:

使用GVM切换到你需要的Go版本:

  1. gvm use go1.13.10

验证版本:

运行go version来验证当前使用的Go版本。

  1. go version

有个坑:

  1. /root/.gvm/scripts/env/ 这个目录下面有个“cd”文件会影响系统本身的cd命令,删除cd文件即可

注意事项

  • 在切换Go版本时,请确保你的项目依赖与所选版本兼容。
  • 如果你的项目使用了Go Modules(推荐的做法),通常可以更灵活地处理不同版本的依赖,因为Go Modules允许你在项目级别指定依赖的版本。
  • 在某些情况下,直接修改系统级别的Go路径可能不是最佳选择,特别是当你需要在同一台机器上同时运行多个Go版本时。使用GVM或类似的版本管理工具可以提供更灵活和安全的解决方案。