环境变量未生效导致go version和go env异常:windows需重启cmd/powershell,macos/linux需source配置文件;国内需配置goproxy=https://goproxy.cn,direct并启用go111module=on。

go version 和 go env 输出不对,说明环境变量没生效
Windows 用户装完 .msi 后必须关掉所有已打开的 CMD/PowerShell 窗口再重开,否则 GOROOT 和 PATH 不会加载;macOS/Linux 用户改完 ~/.zshrc 或 ~/.bashrc 后要执行 source ~/.zshrc,否则 go 命令根本找不到。
常见错误现象:command not found: go 或 go env GOROOT 输出空值。别急着重装,先检查终端是否是新会话、echo $PATH 里有没有 /usr/local/go/bin(macOS/Linux)或 %GOROOT%\bin(Windows)。
国内拉依赖超时、go get 失败,本质是 GOPROXY 没配对
Go 1.13+ 默认开启模块模式,但默认代理 https://proxy.golang.org 在国内不可达。不配代理,go mod download、go get 会卡住或报 timeout 错误。
-
go env -w GOPROXY=https://goproxy.cn,direct是目前最稳的国内配置 -
direct表示代理查不到时回源官方,避免私有模块拉不到 - 顺手加上
go env -w GO111MODULE=on,避免旧项目意外 fallback 到 GOPATH 模式 - 验证:运行
go env | grep GOPROXY,输出应为GOPROXY="https://goproxy.cn,direct"
编译跨平台可执行文件,关键在 GOOS 和 GOARCH
go build 默认按当前系统生成二进制,想导出 Windows 或 macOS 版本,必须显式指定目标平台环境变量。
- Windows 64位:
GOOS=windows GOARCH=amd64 go build -o app.exe - macOS ARM64(M1/M2/M3):
GOOS=darwin GOARCH=arm64 go build -o app - Linux ARMv7(树莓派等):
GOOS=linux GOARCH=arm GOARM=7 go build -o app - 注意:
GOARM只在GOARCH=arm时生效,且值只能是5、6或7
交叉编译不依赖目标系统工具链,但无法运行 cgo 代码(比如调用 C 库),若项目含 import "C",需在对应平台机器上原生编译。
VS Code 里 go run 总报错,大概率是工作区没识别为 Go Module
VS Code 的 Go 插件依赖 go.mod 文件定位项目根目录和依赖范围。新建项目后直接写 main.go 运行,插件可能找不到模块上下文,导致代码提示、跳转、调试失效。
- 务必先在项目根目录执行
go mod init example.com/myapp(模块名可任意,但建议带域名前缀) - 保存
main.go后,VS Code 底部状态栏应显示Go (example.com/myapp) - 如果仍报
cannot find package,检查go.mod是否被 gitignore 忽略,或文件权限是否为只读
模块初始化不是形式主义——它决定了依赖解析路径、vendor 行为、以及 VS Code 能否正确加载 gopls 语言服务器。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











