➡️【好看的皮囊千篇一律,有趣的鲲志一百六七!】- 欢迎认识我~~ 作者:鲲志说 (公众号、B站同名,视频号:鲲志说996) 科技博主:极星会 星辉大使 全栈研发:java、go、python、ts,前电商、现web3 主理人:COC杭州开发者社区主理人 、周周黑客松杭州主理人、 博客专家:阿里云专家博主;CSDN博客专家、后端领域新星创作者、内容合伙人 AI爱好者:AI电影共创社杭州核心成员、杭州AI工坊共创人、阿里蚂蚁校友会技术AI分会副秘书长

很多开发者在 Mac 上用 Homebrew 安装 Go 后,会遇到一个非常顽固的错误:
go: cannot find GOROOT directory: /usr/local/go即使 which go 指向了 Homebrew 的路径,仍然会报错。本文将完整记录我的排查与解决过程,涵盖 Homebrew 的安装机制、环境变量冲突、PATH 优先级、旧配置残留等常见坑。最终给出一个可复现、可直接套用的修复方案。
在 macOS 上,很多人习惯用 Homebrew 管理 Go,而不是手动安装 /usr/local/go。理论上,brew install go@版本号 就能搞定。但实际中,Go 的 GOROOT 配置非常容易被旧配置污染,导致 Homebrew 装好的 Go 还是指向 /usr/local/go。
这篇文章就是我在本地 从安装到彻底修复 的全过程,希望对你有帮助。
我在 macOS(Apple Silicon, arm64)上执行:
brew install go@1.24
which go
go version结果是:
/opt/homebrew/opt/go@1.24/libexec/bin/go
go: cannot find GOROOT directory: /usr/local/go虽然 Go 路径没错,但它死活要去找 /usr/local/go。
echo $PATH | tr ':' '\n' | grep go发现里面居然还有 /usr/local/go/bin。说明历史遗留路径还在污染。
grep -R "GOROOT" ~/.zsh* ~/.bash* ~/.profile ~/.config 2>/dev/null输出发现:
.bash_profile 里有 export GOROOT=/usr/local/go.zshrc 里有 unset GOROOT 和其他重复配置结论:多份配置文件互相打架,Homebrew 的 GOROOT 没被生效。
ls -l /opt/homebrew/opt/go@1.24/libexec可以看到 bin src pkg lib 等标准 Go 目录,说明 Homebrew 的 GOROOT 应该是:
/opt/homebrew/opt/go@1.24/libexecexport GOROOT="/opt/homebrew/opt/go@1.24/libexec"
go version终于恢复正常:
go version go1.24.7 darwin/arm64~/.zshrc清理掉 unset GOROOT 和 /usr/local/go 的残留,改成如下:
# -------------------------------
# Go 环境配置 (Homebrew 版本)
# -------------------------------
export GOROOT="/opt/homebrew/opt/go@1.24/libexec"
export GOPATH="$HOME/go"
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"
# Go 模块配置
export GO111MODULE=on
export GOPROXY=https://goproxy.cn.bash_profile删除所有跟 Go 相关的内容,避免冲突,只保留 Java/Maven 等无关配置。
source ~/.zshrc
hash -rwhich go
go version
go env GOROOT GOPATH结果应该是:
/opt/homebrew/opt/go@1.24/libexec/bin/go
go version go1.24.7 darwin/arm64
GOROOT=/opt/homebrew/opt/go@1.24/libexec
GOPATH=/Users/xxx/go/usr/local/go,而是 /opt/homebrew/opt/go@版本/libexec。
.bash_profile 和 .zshrc)会让 go 找不到正确的 GOROOT。
unset GOROOT,而是显式指定正确的 GOROOT。
通过这次踩坑,我学到:
现在我的 Go 终于恢复正常,可以安心写代码了 🎉。