现代Go(1.16+)默认启用模块模式,安装后无需配置GOPATH或手动添加PATH,只需重启终端使环境变量生效;验证用which go和go version,新项目须先执行go mod init初始化模块并设置GOPROXY代理。

直接装完就能跑 go run main.go,不用配 GOPATH,也不用手动加 PATH —— 现代 Go(1.16+)默认启用模块模式,安装包自带路径配置,99% 的新手卡在验证环节只是因为没重启终端或没生效环境变量。
go version 没反应?先查 PATH 和终端会话
这不是 Go 没装好,而是 shell 没读到新 PATH。Windows 用户装完 .msi 基本自动搞定;macOS/Linux 用户常见问题:
- 改了
~/.zshrc但没运行source ~/.zshrc,或者开的是旧终端窗口 - 用了 fish 或 bash,却去改了
.zshrc,导致配置根本没加载 - Mac M 系列用户装了 pkg 却误以为要手动解压,其实无需额外操作
验证方式:在新打开的终端里执行 which go,有输出才说明 PATH 生效;再跑 go version,看到类似 go version go1.22.0 darwin/arm64 就算成功。
go mod init 报错 “no module found”?不是环境问题,是目录没初始化
很多人写完 main.go 就直接 go run main.go,能跑;但一旦想加第三方库(比如 github.com/gorilla/mux),go get 就报错。这不是代理或网络问题,而是当前目录还没声明为模块。
立即学习“go语言免费学习笔记(深入)”;
- 必须先在项目根目录执行
go mod init example.com/myapp(模块名可以是任意合法域名,不需真实存在) - 执行后生成
go.mod文件,后续go get才会写入依赖并自动下载 - 如果跳过这步就
go get,Go 会尝试在父目录找go.mod,找不到就报错
国内拉包慢或超时?优先设 GOPROXY,别碰 GOSUMDB
GO111MODULE=on 是必须的(Go 1.16+ 默认开启),但光开模块不够,国内直连 proxy.golang.org 基本失败。正确做法只改代理:
- 执行
go env -w GOPROXY=https://goproxy.cn,direct(cn 站稳定,支持私有模块 fallback) - 不要动
GOSUMDB—— 设成off会跳过校验,带来安全风险;sum.golang.org在国内也常不可达,靠代理自动中转即可 - 验证:执行
go env GOPROXY,输出应为https://goproxy.cn,direct
真正容易被忽略的点是:模块初始化和代理设置都得在项目目录里做,而不是全局一劳永逸;每个新项目都要 go mod init,且 go run 必须在含 go.mod 的目录下执行,否则它会退化成老式 GOPATH 模式,行为不可控。


















