Go 版本管理与升级指南

1,519 阅读7分钟

Go 版本管理与升级指南

本文将详细介绍如何使用开源工具 g 进行 Go 的版本管理及升级操作,包含完整的环境变量配置说明和旧版本处理方法。

什么是 g?

g 是一个轻量级的 Go 版本管理工具,支持多版本安装、切换和卸载。通过 g 可以:

  • 一键安装/卸载不同 Go 版本
  • 无缝切换项目所需 Go 版本
  • 自动管理环境变量

项目地址与下载:github.com/voidint/g

最新发布版本:github.com/voidint/g/r…

Windows 安装指南

步骤 1:处理旧版 Go 安装

  1. 卸载原有 Go:

    • 控制面板 → 程序和功能 → 找到 Go → 卸载
  2. 删除旧版 Go 目录(如 C:\Environment\Go,不过通过控制面板卸载时目录也跟着删除了,自己尝试的时候请注意)

  3. 清理环境变量:

    • 删除系统变量中的旧 GOROOT(如果存在的话,一般第一步的时候也会一起删了)
    • 编辑系统环境变量中 Path 变量,删除旧版 Go 的 bin 路径(如 C:\Environment\Go\bin
  • 注意:如果你不清楚如何找到环境变量,请接着往下看,后面会详细说明

步骤 2:下载 g 安装包

  1. 访问 g 发布页面(可能需要科学上网) g 版本管理工具界面
  2. 下载最新版 windows-amd64.zip 文件(如 g-v1.8.0-windows-amd64.zip

步骤 3:解压文件

  1. 创建安装目录(示例:C:\Environment\g
  2. 解压下载的 ZIP 文件到该目录
  3. 确认目录包含 g.exe 可执行文件

步骤 4:配置环境变量(详细说明)

环境变量配置在 系统环境变量 中设置:

  1. 打开环境变量设置:

    • Win + R 输入 sysdm.cpl 并回车
    • 转到 "高级" 选项卡 → 点击 "环境变量"
    • 在 "系统变量" 部分操作
  2. 添加/修改以下变量:

变量名详细设置步骤
G_MIRRORhttps://golang.google.cn/dl/1. 点击"新建"
2. 变量名:G_MIRROR
3. 变量值:https://golang.google.cn/dl/
G_HOMEC:\Environment\g1. 点击"新建"
2. 变量名:G_HOME
3. 变量值:C:\Environment\g
GOROOT%G_HOME%\go1. 点击"新建"
2. 变量名:GOROOT
3. 变量值:%G_HOME%\go
GOBIN%GOROOT%\bin1. 点击"新建"
2. 变量名:GOBIN
3. 变量值:%GOROOT%\bin
G_EXPERIMENTALtrue1. 点击"新建"
2. 变量名:G_EXPERIMENTAL
3. 变量值:true
  1. 修改 Path 变量:
  • 在系统变量中找到 Path → 点击"编辑"

  • 点击"新建"添加两条路径:

    1. %G_HOME% (g 工具路径)
    2. %GOBIN% (Go 命令路径)

    image-20250717223733735

确定后,重新打开cmd

步骤 5:验证安装

打开新的命令提示符执行:g --version

 C:\Users\xxx>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

管理 Go 版本

注:后续操作建议都在管理员cmd下执行

安装 Go 版本

 # 安装最新稳定版
 g install latest
 ​
 # 安装指定版本(如 1.22.2)
 g install 1.22.2

注意:在执行安装命令的时候可能会遇见以下情况

 C:\Users\XXX>g install latest
 [g] Resource(Https://Golang.google.cn/Dl/Go1.25rc2.windows-Amd64.zip) download failed ==> open C:\Users\My\Environment\g\downloads\go1.25rc2.windows-amd64.zip: Access is denied.

遇见了就以管理员身份打开cmd,重新下载即可

 C:\Windows\system32>g install latest
 [g] Url "https://golang.google.cn/dl/" is unreachable ==> Get "https://golang.google.cn/dl/": tls: failed to verify certificate: x509: certificate has expired or is not yet valid:
 ​
 C:\Windows\system32>g install latest
 Downloading 100% [===============] (67/67 MB, 17 MB/s)
 Computing checksum with SHA256
 Checksums matched
 Now using go1.25rc2 windows/amd64

此时在打开我们的 g 目录,可以看见多出了这三个新文件夹了

image-20250717225022143

注意:后续操作大部分情况下都需要在管理员 cmd 中执行

查看已安装版本

 g ls

输出示例:

 * 1.22.2
   1.25rc2

其中的 * 表示当前正在使用的 Go 版本

切换 Go 版本

注意:这里也要以管理员身份在cmd中执行

 g use 1.25rc2
 :: 在用户cmd中执行提示:
 C:\Users\XXX>g use 1.25rc2
 [g] Symlink C:\Users\XXX\Environment\g\versions\1.25rc2 C:\Users\XXX\Environment\g\go: A required privilege is not held by the client.
 ​
 :: 在管理员cmd中执行提示:
 C:\Windows\system32>g use 1.25rc2
 Now using go1.25rc2 windows/amd64

卸载 Go 版本

卸载命令同切换

 g uninstall 1.22.2

升级到最新版

 g install latest
 g use latest

补充:Goland 配置

通过 g 管理 Go 版本后,Goland 可能会找不到 Go 的文件。这很正常,不仅如此,虽然 Goland 会提示未定义的GOROOT,但是你还是能运行程序的(憋笑)。直接上操作吧

  1. 打开环境变量,在用户变量中,打开path,更新最新的go\bin目录如图所示: image-20250718002806237

  2. 确定后重启Goland,进行配置修改

    • 打开 Goland,进入设置File > Settings (Windows/Linux)
    • 导航到:Go > GOROOT
    • 删除所有旧配置,点击 + 添加:选择 Add System GOROOT → 从下拉菜单中选择 C:\XXX\Environment\g\go
    • 等待Goland编译完配置,搞定

注意

  • 尽管你改了后,Goland 会重置索引,建立新联系,从而保证使用 Go 版本如我们所期望,但如果你点开 GOROOT,会发现版本不会变化,并且你的go.mod里面不会显示版本,这个个人感觉是无伤大雅的(如果有大佬知道会有什么隐患可以给大家说说)。
  • 此外,无论你是通过 Goland 终端,还是 cmd 切换 Go 版本,Goland都能正确识别索引

image-20250718003551444

写在末尾的话

补充:Windows下保留旧版 Go 并与 g 工具集成(未实现)

本来这块想写的,但是折腾保留旧版本,不如删了后重下来得快,效率才是第一位,所以就没写了。如果有大佬知道的话,可以给笔者说说如何实现,或者在评论里留言一下。

此外,以后我会更新如何在 Linux 环境下进行Go版本管理与升级,毕竟大部分开发时间都会和 Linux 系统打交道,这是个绕不过去的坎。当然,如果老哥们有推荐的文章,也欢迎留言推荐一下,少走弯路总归是好的,写Windows下更新的时候我还是踩了不少坑的,特别是最开始我想保留旧版本的时候(悲)。

碎碎念结束,祝你有所收获,诸君共勉!

25-7-26新增:go Install可能存在的问题

起因,当我想学习GoFrame框架的时候,我参考官方文档下载官方推荐的安装框架工具

框架提供的开发工具为开发者提供了便捷的开发指令简化开发工作,提供了例如工程脚手架、代码自动生成、工具及框架更新等实用命令。工具下载地址: github.com/gogf/gf/rel…

Windows环境执行命令安装后:

go install github.com/gogf/gf/cmd/gf/v2@latest

提示:

 gf : 无法将“gf”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
 写,如果包括路径,请确保路径正确,然后再试一次。
 所在位置 行:1 字符: 1

这里直接说解决方案

第一步,打开环境变量,GOBIN改为绝对目录C:\Users\XXX\go\bin,此时 g 命令可用,但是 Go 命令不可用,即无法识别到 go

第二步,系统path中,新增变量 %GOROOT%\bin

第三步,重启环境,打开 Goland,重新下载后,无输出即表示安装完毕,此时可以再Goland终端内出入 gf -v 查看安装信息了

PS D:\Go-Project\GoFrame-Project> gf -v
v2.9.0
Welcome to GoFrame!
Env Detail:
  Go Version: go1.23.11 windows/amd64
  GF Version(go.mod):
    github.com/gogf/gf/v2@v2.9.0
CLI Detail:
  Installed At: C:\Users\XXX\go\bin\gf.exe
  Built Go Version: go1.23.11
  Built GF Version: v2.9.0
Others Detail:
  Docs: https://goframe.org
  Now : 2025-07-26T23:58:31+08:00

注意:最新版本的Go 1.25rc2不支持gf,会出现以下错误

 # golang.org/x/tools/internal/tokeninternal
 C:...go\pkg\mod\golang.org\x\tools@v0.21.1...\tokeninternal.go:64:9: invalid array length -delta * delta (constant -256 of type int64)

说的比较潦草,但是按照过程是能解决问题的,如果有新的问题出现,也欢迎大家留言指出,感谢!