验证go安装成功需执行go version和go env,确认goroot与gopath路径及go111module=on;用where go核对go.exe路径;配置goproxy=https://goproxy.cn,direct并验证;再通过go run与go build测试编译运行能力。

Windows 上装 Go,用 .msi 安装包最省事,装完关掉所有 CMD/PowerShell 窗口再重开,否则 go version 会报“不是内部或外部命令”。
怎么验证 Go 是否真装好了
别只输 go version 就算完。它只告诉你编译器在不在,不反映环境变量是否完整生效。
- 必须同时跑
go env,重点看GOROOT(安装路径)和GOPATH(工作目录)有没有值; - 如果
GOROOT是空的,说明安装时没写入系统变量,或者你用的是.zip包但没手动配PATH; - 如果
GOPATH是空的,新版 Go(1.16+)默认不设,但不影响模块项目——只要GO111MODULE=on就行; - 输
where go(Windows)或which go(macOS/Linux),确认调用的是你刚装的那个go.exe,不是旧版本残留。
为什么 go get 总是超时或报错 connection refused
因为默认代理 https://proxy.golang.org 在国内基本不可用,不是网络问题,是策略性屏蔽。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
- 必须执行这三句(CMD):
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,directgo env -w GOSUMDB=sum.golang.org -
goproxy.cn是七牛云维护的国内镜像,稳定且支持校验;direct表示找不到时回源官方,不是跳过校验; - 别用已停服的
goproxy.io或响应缓慢的mirrors.aliyun.com/goproxy; - 改完后用
go env | findstr GOPROXY确认输出里有https://goproxy.cn,不是旧值。
go build 和 go run 的关键区别在哪
新手常以为只是“运行 vs 编译”,其实核心差异在于:是否生成可执行文件、是否检查跨平台兼容性、是否触发 init() 执行时机。
-
go run main.go:临时编译 + 立即执行,不生成文件;适合调试,但每次都要重新编译; -
go build(无参数):在当前目录生成一个默认名(Windows 是main.exe),可复制到其他机器直接运行; -
go build -o ./bin/app:指定输出路径和文件名,推荐用于 CI/CD 流程; - 如果项目含多个
.go文件,go run必须列全(如go run main.go utils.go),而go build在模块根目录下直接敲就行; -
go build会提前暴露平台相关错误(比如用了syscall的 Windows 特有调用却在 Linux 下编译),go run可能等到运行时才崩。
最容易被忽略的一点:Go Modules 默认开启后,go.mod 文件一旦生成,go build 就只认当前模块里的依赖,不会去 GOPATH/src 找旧包——哪怕你本地磁盘上真有那个路径。所以删了 go.mod 再试,和保留它,行为可能完全不同。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










