Go 1.22安装后必须配置GO111MODULE=on和GOPROXY=https://goproxy.cn,direct;macOS用.pkg安装后需手动将/usr/local/go/bin加入PATH(如export PATH="/usr/local/go/bin:$PATH"),Linux解压tar.gz后GOROOT可自动推断,但PATH必须包含/usr/local/go/bin,GOPATH仍建议设为$HOME/go并将其bin目录加入PATH。

Go 1.22 是当前稳定版,GO111MODULE=on 和 GOPROXY=https://goproxy.cn,direct 已成标配;不配这两项,go get 会失败或极慢,不是“可选”,是必须。
macOS 上用 pkg 安装后为什么 go version 找不到?
macOS 安装 .pkg 后,Go 二进制默认装在 /usr/local/go/bin,但该路径未自动加入 PATH。Zsh(macOS Catalina+ 默认 shell)需手动追加:
- 编辑
~/.zshrc,末尾加:export PATH="/usr/local/go/bin:$PATH" - 运行
source ~/.zshrc生效 - 验证:
which go应输出/usr/local/go/bin/go,再执行go version
常见坑:改了 ~/.bash_profile 却用 Zsh,或漏写 $PATH 导致覆盖原路径。
Linux 下 tar.gz 解压后 GOROOT 还要手动设吗?
不用。只要把 /usr/local/go/bin 加入 PATH,go 命令就能自动定位自身安装路径,GOROOT 无需显式设置(除非你把 Go 装在非标准位置,比如 /opt/go)。
立即学习“go语言免费学习笔记(深入)”;
- 推荐配置(写入
~/.bashrc或~/.zshrc):export PATH=$PATH:/usr/local/go/bin -
go env GOROOT会自动显示正确值,不必干预 - 误设
GOROOT可能导致go install失败或标准库无法识别
GOPATH 在 Go 1.16+ 还有必要设吗?
仅当你要用 go get 安装可执行工具(如 gofmt、delve)时才需要 GOPATH/bin 在 PATH 中;模块项目本身不再依赖 GOPATH/src。
- 建议仍设
GOPATH=$HOME/go,并确保$GOPATH/bin在PATH里 - 否则
go install github.com/xxx/cli@latest装的命令无法直接调用 -
go mod项目可完全脱离GOPATH/src,放在任意目录均可
真正容易被忽略的是 GO111MODULE 和 GOPROXY 的组合效果:即使你只写一个 main.go 不用任何外部包,只要没开 GO111MODULE=on,go run 在某些旧项目残留下可能意外启用 GOPATH 模式,导致模块解析异常——这不是报错,而是静默行为偏移。


















