推荐使用gvm或asdf管理多版本Go,生产环境可手动安装并切换;gvm通过命令安装、切换版本,asdf支持多语言统一管理,手动方式则通过解压不同版本并调整软链接和环境变量实现。

在开发过程中,不同项目可能依赖不同版本的 Go,因此需要在系统中管理多个 Go 版本并能快速切换。Golang 官方没有提供类似
pyenv或
nvm的多版本管理工具,但我们可以借助第三方工具或手动方式实现灵活切换。
使用 gvm 管理多版本 Go
gvm(Go Version Manager)是社区常用的 Go 多版本管理工具,支持安装、卸载和切换多个 Go 版本。
安装 gvm:
打开终端,运行以下命令:
立即学习“go语言免费学习笔记(深入)”;
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer.sh)
安装完成后,重启终端或执行:
source ~/.gvm/scripts/gvm
常用操作命令:
-
列出可安装版本:
gvm listall
-
安装指定版本:
gvm install go1.20.7
或gvm install go1.21.5
-
查看已安装版本:
gvm list
-
切换当前版本:
gvm use go1.21.5
-
设置默认版本:
gvm use go1.21.5 --default
-
卸载某个版本:
gvm uninstall go1.19.3
手动管理多版本(推荐用于生产环境)
对于追求稳定和可控性的用户,可以手动下载不同版本的 Go 并通过修改环境变量切换。
步骤如下:
- 从 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 下载所需版本的 Go 压缩包(如
go1.20.7.linux-amd64.tar.gz
) - 解压到指定目录,例如:
sudo tar -C /usr/local/go1.20.7 -xzf go1.20.7.linux-amd64.tar.gz
sudo tar -C /usr/local/go1.21.5 -xzf go1.21.5.linux-amd64.tar.gz
- 创建软链接指向当前使用的版本:
sudo ln -sf /usr/local/go1.21.5 /usr/local/golang
- 配置环境变量(在
~/.bashrc
或~/.zshrc
中添加):
export GOROOT=/usr/local/golang
export PATH=$GOROOT/bin:$PATH
- 重载配置:
source ~/.bashrc
切换版本方法:
只需更改软链接指向目标版本:
sudo ln -sf /usr/local/go1.20.7 /usr/local/golang
然后重新加载 shell 配置即可生效。
使用 asdf 管理多种运行时(含 Go)
asdf 是一个通用的版本管理工具,支持 Node.js、Python、Ruby、Go 等多种语言。
安装与配置:
- 安装 asdf:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
- 添加插件:
asdf plugin-add golang https://github.com/kennyp/asdf-golang.git
- 安装 Go 版本:
asdf install golang 1.21.5
- 全局或局部设置版本:
asdf global golang 1.21.5
(全局)
asdf local golang 1.20.7
(当前项目)
这种方式适合同时管理多种技术栈的开发者。
基本上就这些。根据使用场景选择合适的方式:日常开发推荐 gvm 或 asdf,生产环境建议手动管理确保稳定性。










