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)。
- 推荐配置(写入
~/.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 模式,导致模块解析异常——这不是报错,而是静默行为偏移。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











