Windows全新安装Go后,必须立即配置模块代理和启用模块系统才能正常编译运行项目;执行go env -w GO111MODULE=on、go env -w GOPROXY=https://goproxy.cn,direct、go env -w GOSUMDB=sum.golang.org三条命令并新开PowerShell验证,否则go mod init会卡住、go get超时失败。

直接执行这三条命令就能跑起来
Windows 上全新安装 Go 后,go version 能输出版本号只是第一步;真正能编译运行项目,必须立刻配置模块代理和启用模块系统。否则 go mod init 会卡住,go get 会超时失败。
- 打开 PowerShell(不是 CMD),以管理员身份非必需,但确保窗口是新打开的(旧窗口不读取新环境变量)
- 逐行执行以下命令(复制粘贴即可):
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct go env -w GOSUMDB=sum.golang.org
执行后立即验证:go env | findstr "GO111MODULE\|GOPROXY" 应看到两行匹配结果。注意:不要用 set 或 $env: 临时设置,那些只在当前会话生效,重启就丢。
别碰 GOPATH,除非你明确要管理旧项目
Go 1.16+ 默认启用 Modules,GOPATH 对日常开发已无实质影响。新建项目完全不需要把代码放到 %GOPATH%\src 下,也不需要提前创建 src、bin、pkg 目录。
- 随便建个空文件夹,比如
D:\myapp,进目录后直接go mod init myapp -
main.go可以放在任意位置,只要在模块根目录下就行 - 如果误设了
GOPATH且路径含空格或中文,反而会导致go install失败或工具链报错
编译时 go build 和 go run 的关键区别
go run 是调试首选,但它的行为和 go build 不同,容易掩盖路径或依赖问题。
Go 配置库,使用 spf13/viper — 分层优先级(flag > env >file > KV > default),提供 BindPFlag/BindPFlags、SetEnvPrefix + SetEnvKeyReplace 等功能。
立即学习“go语言免费学习笔记(深入)”;
-
go run main.go:只编译并运行当前文件,不生成可执行文件,也不检查go.mod是否完整 -
go build -o app.exe:强制校验整个模块依赖,生成独立二进制,适合交付 - 常见坑:
go run .(注意点号)才等价于go build的模块级行为;单独go run *.go可能漏包
VS Code 里 go tools 安装失败?先关掉自动代理
VS Code 的 Go 扩展默认调用 go install 拉取 gopls、dlv 等工具,但若系统代理或公司防火墙干扰,会卡在 “Fetching tools…”。
- 不要在 VS Code 里点 “Install All” —— 先手动在终端执行:
go install golang.org/x/tools/gopls@latest - 如果失败,加
-v看具体哪个模块拉不到,再针对性go install单个工具 - 确认
GOPROXY生效后,再回到 VS Code 触发重试,否则扩展会反复走失败路径
模块初始化、依赖下载、二进制构建这三步环环相扣,任何一环代理没配稳,都会表现为“明明能 go version,却跑不起来 hello world”。最常被忽略的是:PowerShell 环境变量刷新必须新开窗口,不是 source 或 refreshenv 能解决的。

















