mac和linux用户应优先使用官方.pkg或tar.gz安装go,避免homebrew导致goroot冲突、go env -w失效及go mod异常;windows用户直接下载.msi安装包。

Mac 和 Linux 用户别装 Homebrew 版 Go,Windows 用户直接下 .msi —— 这是新手最常踩的第一个坑。 官方二进制包自带完整环境变量配置,而包管理器安装的 Go(尤其是 Homebrew)容易和 GOROOT 冲突、go env -w 失效、甚至导致 go mod 行为异常。
Mac 上用 .pkg 安装后为什么 still get “command not found”?
不是没装好,是终端没重载 shell 配置。macOS 的 .pkg 安装器会把 Go 装到 /usr/local/go,并写入 /etc/paths,但这个机制只对新打开的终端生效。
- 关掉所有终端窗口,重新打开一个,再运行
go version - 如果仍失败,检查
/etc/paths是否真有/usr/local/go/bin:运行cat /etc/paths - 别手动改
~/.zshrc加export PATH=/usr/local/go/bin:$PATH—— 重复添加会导致PATH里出现两个go路径,which go可能指向旧版本 - 验证是否干净:
which go应输出/usr/local/go/bin/go;go env GOROOT应输出/usr/local/go
Linux 用户解压 tar.gz 后 PATH 总配不对
问题不在命令写错,而在 shell 配置文件选错了。Ubuntu/Debian 默认用 ~/.bashrc,但 CentOS 7/8+ 新用户默认用 ~/.bash_profile,而 Zsh 用户该改 ~/.zshrc —— 写错文件等于白配。
- 先确认你当前 shell:
echo $SHELL - 再确认配置文件是否被加载:
echo $PATH里有没有/usr/local/go/bin - 正确写法(以 bash 为例):
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bash_profile && source ~/.bash_profile - 别漏掉
source,否则当前终端不生效 - 验证:
go env GOPATH在 Go 1.16+ 默认是$HOME/go,不用手动设;GO111MODULE默认已是on,无需额外go env -w
go mod tidy 卡住或报错 proxy timeout
不是网络差,是没设对 GOPROXY。国内直连 proxy.golang.org 基本不可用,但设成 https://goproxy.cn 后还失败,大概率是因为用了逗号分隔却忘了 direct。
- 正确命令:
go env -w GOPROXY=https://goproxy.cn,direct - 错误写法:
go env -w GOPROXY=https://goproxy.cn(缺,direct,私有模块会 404) - 验证:
go env GOPROXY输出应为https://goproxy.cn,direct - 如果项目含私有 Git 仓库(如公司内网 GitLab),需额外加
GOPRIVATE=git.company.com - 别在
~/.bashrc里用export GOPROXY=...——go env -w写的是 Go 自己的配置,优先级更高且跨 shell 一致
最容易被忽略的点:Go 1.16+ 已废弃 GOPATH 作为项目根目录的强制要求,但很多人还在新建项目前手动 cd $GOPATH/src/xxx。现在只需 mkdir myproj && cd myproj && go mod init myproj,go 会自动创建 go.mod 并忽略 GOPATH 路径约束 —— 这个认知偏差会让新手多绕三天路。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











