Mac 使用 GVM 管理多版本 Go 环境
使用 GVM 管理多版本 Go 环境
在本文中,我们将使用 gvm
(Go Version Manager)工具管理本地多个 Go 语言版本。gvm
功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场景。
需要注意的是,gvm
在第一次安装 Go 时,需要终端环境中已经存在一个可用的 Go 语言版本,因为 gvm
需要依赖现有的 Go 环境来编译安装新的版本。为了满足这一需求,我们可以使用 macOS 的 Homebrew 先安装一个临时的 Go 版本,待 gvm
安装完成后,再将 Homebrew 安装的 Go 删除。
1. 使用 Homebrew 安装 Go
首先,我们需要通过 Homebrew 安装一个基础版本的 Go:
# 安装 Go
brew install go
# 验证安装是否成功
go version
which go
运行以上命令后,你应该可以看到当前安装的 Go 版本号以及 Go 可执行文件的路径。
2. 安装 GVM
接下来,我们安装 gvm
工具。gvm
会被安装到用户的主目录下(~/.gvm
):
如果是 Ubuntu/Debian 系统中,运行以下命令安装所需依赖:
sudo apt-get update
sudo apt-get install curl git mercurial make binutils bison gcc build-essential
安装:
# 安装 gvm
bash < <(curl -sSL https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# 安装完成后,加载 gvm
source ~/.gvm/scripts/gvm
运行上述命令后,gvm
应该已经成功安装,可以通过以下命令验证:
gvm version
3. 使用 GVM 安装 Go
现在我们可以使用 gvm
安装和管理多个 Go 版本。
查看可用的 Go 版本
gvm listall
gvm
会列出所有可用的 Go 版本,你可以选择其中一个版本进行安装。
安装特定版本的 Go
gvm install go1.20
安装完成后,你可以通过以下命令查看已安装的版本:
gvm list
删除 Homebrew 安装的 Go
由于 gvm
已经安装了 Go,现在可以删除通过 Homebrew 安装的临时 Go:
brew uninstall go
切换到某个版本的 Go
gvm use go1.20 --default
这会将 Go 的默认版本设置为 go1.20
,后续每次打开终端时都会自动使用该版本。
验证安装
go version
which go
运行以上命令,确保 go
的版本和路径都指向 gvm
管理的版本。
4. 安装其他版本的 Go
如果需要安装其他版本的 Go,例如 go1.23.5
,可以运行以下命令:
gvm install go1.23.5
安装完成后,你可以随时通过 gvm use
切换版本,或者使用 gvm use go1.23.5 --default
将其设置为默认版本。
5. 在 VS Code 中使用 Go
在开发过程中,我们通常会使用 VS Code 作为 Go 语言的 IDE。为了支持 Go 的开发,你需要安装官方的 Go 插件:
- 打开 VS Code 的扩展市场(Extensions)。
- 搜索并安装 Go 插件。
- 插件安装完成后,VS Code 会自动检测你的 Go 环境。
如果 VS Code 没有正确识别你通过 gvm
安装的 Go 版本,可以参考以下步骤手动配置:
- 打开 VS Code 设置(
Cmd + ,
或Ctrl + ,
)。 - 搜索
Go: GOROOT
,并将其设置为gvm
中的 Go 路径,例如:~/.gvm/gos/go1.20
在 VS Code 中调试环境变量
在 VS Code 的集成终端中,运行以下命令,确保它能够正确识别 gvm
管理的 Go 版本:
go version
go env
如果 VS Code 的终端与外部终端行为不一致(例如无法正确识别 GOROOT
),可以在 VS Code 的设置中配置终端环境变量。
vscode go 自动运行插件 code runner(能够像python一样点击右上角运行)
参考:vscode go 自动运行插件 code runner
6. 环境变量及相关命令
在 Go 开发中,环境变量(如 GOPATH
、GOROOT
等)非常重要,以下是一些常用的环境变量管理和调试命令:
查看当前 Go 环境变量
运行以下命令查看当前 Go 环境的所有配置:
go env
你会看到类似的输出:
GO111MODULE="on"
GOPATH="/Users/yourname/go"
GOROOT="/Users/yourname/.gvm/gos/go1.20"
查看特定环境变量
如果只想查看某个环境变量的值,可以运行:
go env GOROOT
go env GOPATH
设置 GOPATH
如果需要自定义 GOPATH
,可以在 shell 配置文件(如 ~/.bashrc
或 ~/.zshrc
)中添加以下内容:
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH
然后运行以下命令使配置生效:
source ~/.bashrc # 如果使用 bash
source ~/.zshrc # 如果使用 zsh
检查 Go 的可执行文件路径
which go
这个命令会返回当前终端中使用的 go
的可执行文件路径(例如 ~/.gvm/gos/go1.20/bin/go
)。如果路径不正确,可以检查是否存在多个 Go 版本冲突。