1.下载源代码
访问 Go 官方下载页面 下载 Go 1.22 适合系统的版本 (darwin-arm64 适用于 macOS M1/M2 芯片)。
cd Downloads
sudo mkdir -p /usr/local/go1.20
sudo mkdir -p /usr/local/go1.22
MacBook-Air Downloads % sudo tar -C /usr/local/go1.20 -xzf go1.20.0.darwin-arm64.tar.gz
MacBook-Air Downloads % sudo tar -C /usr/local/go1.22 -xzf go1.22.0.darwin-arm64.tar.gz
检查 安装目录是否正确
首先,确认 Go 的目录结构是否正确,尤其是 go 可执行文件是否存在于 /usr/local/go1.22/bin/ 目录中。 查看 Go 1.22 目录:
ls /usr/local/go1.22/bin
ls /usr/local/go1.20/bin
你应该看到一个名为 go 的可执行文件: go
如果不存在,并且你看到目录结构是这种
MacBook-Air go % pwd
/usr/local/go1.22/go
MacBook-Air go % ls
CONTRIBUTING.md README.md api doc misc test
LICENSE SECURITY.md bin go.env pkg
PATENTS VERSION codereview.cfg lib src
解决方法
需要调整 Go 目录的结构,使得所有内容都直接位于 /usr/local/go1.22,而不是在 /usr/local/go1.22/go 下。
具体步骤
- 进入父目录 /usr/local/go1.22:
cd /usr/local/go1.22
- 移动所有内容到 /usr/local/go1.22 目录:将 go 目录中的内容直接移动到 /usr/local/go1.22,并删除多余的 go 目录:
sudo mv go/* . sudo rm -rf go
- 检查结构是否正确:现在你的 Go 安装结构应该如下:
ls /usr/local/go1.22
- 应该看到以下内容:
bin pkg src lib misc doc README.md ... 等
确保 bin 目录直接位于 /usr/local/go1.22 下,这样 go 可执行文件就能通过正确的路径找到。
更新 ~/.zshrc 并重新加载配置
vim ~/.zshrc
# 设置默认go路径
export GOROOT=/usr/local/go1.22
export PATH=$GOROOT/bin:$PATH
export PATH=$PATH:$(go env GOPATH)/bin
# export PATH=$PATH:$M2_HOME/bin
export PATH="$M2_HOME/bin:$PATH"
source ~/.zshrc
更新~/.zprofile并重新加载配置
.zshrc 主要用于交互式的 Zsh Shell 配置,而 .zprofile 用于登录 Shell 配置。IDE 启动的环境可能需要登录 Shell 设置。
vim ~/.zprofile
export GOROOT=/usr/local/go1.22
export PATH=$GOROOT/bin:$PATH
source ~/.zprofile
验证步骤
验证 Go 版本切换是否生效:在终端中执行以下命令来确保切换到 Go 1.22 后,一切正常:
go version
应该显示 Go 1.22 版本。
问题排查
Vscode 报错
Failed to find the "go" binary in either GOROOT() or PATH(/Users/gongna/.gvm/bin:/opt/homebrew/opt/binutils/bin:/Users/gongna/.rd/bin:/Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/bin:/opt/homebrew/opt/node@18/bin:/Users/gongna/.cargo/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/corplink/mdm/opt/corplink-mdm/bin:/Users/gongna/.orbstack/bin:/usr/local/go/bin:/Users/gongna/go/bin). Check PATH, or Install Go and reload the window. If PATH isn't what you expected, see https://github.com/golang/vscode-go/issues/971
解决办法
https://github.com/golang/vscode-go/issues/971
覆盖 Vscode中的 goroot 变量解决。
- 打开设置终端
Shift + Cmd + P
-
寻找设置 Search for: “open settings” and choose “Open Settings (JSON)”
- 查看GoRoot变量
go env GOROOT='/usr/local/go1.23'
- 修改JSON文件
{ "go.goroot": "/usr/local/go1.23" }
- 如果重启Vscode后依旧不生效可以试试
$ which go $ /usr/local/go1.23/bin/go
{
"go.alternateTools": {
"go": "/usr/local/go1.23/bin/go"
}
}
将 go.goroot 添加到 json 文件不起作用;如果在寻找 goroot 值的变量时遇到问题,或者它没有出现在 $go env 中,你可以通过找到它which go ,这应该是 goroot 的值