推荐新手选 msi:它自动设置 goroot 和 path;zip 需手动配置,易出错。gobin 不必强制设,go111module 建议设为 on。验证安装需执行 go version、go env gopath、go list -m all。

下载安装包时该选 msi 还是 zip(windows)
Windows 用户直接去官网下载,会看到两个主流选项:go1.x.x.windows-amd64.msi 和 go1.x.x.windows-amd64.zip。前者是图形化安装器,后者是免安装压缩包。
推荐新手选 msi:它会自动把 GOROOT 设为 C:Program FilesGo,并帮你把 %GOROOT%bin 加进系统 PATH —— 这一步手误容易出问题,比如漏加、加错路径、或没重启终端。
zip 适合需要多版本共存或想完全掌控路径的用户,但你得手动解压、设 GOROOT 环境变量、再手动追加 PATH。常见错误是只设了 GOROOT 却忘了加 bin 目录到 PATH,导致敲 go version 报“命令未找到”。
GOBIN 和 GO111MODULE 是否必须设置
不用强制设 GOBIN:默认情况下 go install 生成的可执行文件会放在 $GOPATH/bin(linux/macos)或 %GOPATH%bin(Windows)。只要 $GOPATH 已设且其 bin 目录进了 PATH,就能直接运行安装的工具(比如 gofmt、dlv)。
立即学习“go语言免费学习笔记(深入)”;
GO111MODULE 建议显式设为 on:
- Go 1.16+ 默认开启模块支持,但某些旧项目或 CI 环境可能仍依赖
off行为 - 本地开发统一设成
on可避免“同一份代码在不同机器上go build结果不一致”的问题 - 设法(以 Windows 为例):
setx GO111MODULE on,然后新开终端生效
验证安装是否成功的三个关键命令
别只跑 go version 就以为完事。这三个命令缺一不可:
-
go version:确认二进制可用、版本正确 -
go env GOPATH:检查GOPATH是否指向你预期的路径(如C:Usersnamego),否则go get或go install会写到奇怪位置 -
go list -m all(在任意空目录下执行):如果报go: not using modules,说明GO111MODULE没生效;如果报no modules to list,说明模块模式已就位
特别注意:macOS/Linux 用户若用 zsh,改完 ~/.zshrc 后要执行 source ~/.zshrc,否则 go env 显示的仍是旧值。
为什么 go mod init 后 go run main.go 仍报找不到包
这不是环境配置问题,而是模块路径和导入路径不匹配的典型表现。例如你在 /home/user/myproj 下执行 go mod init example.com/myproj,但代码里写了 import "myproj/utils" —— Go 不会自动把本地路径映射过去。
解决方式只有两种:
- 导入路径必须与
go.mod第一行的 module 名完全一致,比如import "example.com/myproj/utils" - 或者干脆用相对路径初始化:
go mod init myproj,然后所有import都用myproj/xxx(但这种写法无法发布到公网模块仓库)
这个坑不体现在安装阶段,却常被误认为“环境没配好”。实际是模块语义和导入路径强绑定,绕不开。