Go安装成功需依次验证:go version能输出、go run可执行hello.go、go mod init及依赖拉取正常;任一环节失败需按PATH、GOROOT、GOPATH、工具链、代理等顺序排查。

go version 能正常输出,且 go run 能执行简单程序,就说明 Golang 安装成功了——其余检查都是为了定位“为什么不能跑”或“哪里容易出错”。
运行 go version 看是否被系统识别
这是第一道门槛,也是最常卡住的地方。
如果终端报错 'go' 不是内部或外部命令(Windows)或 command not found: go(macOS/Linux),说明 go 命令根本没进 PATH。
- 检查安装路径:Windows 通常是
C:\Go\bin,macOS/Linux 一般是/usr/local/go/bin - 确认该路径已加入系统
PATH环境变量(不是只加在某次终端里,要永久生效) - Windows 用户可运行
where go,macOS/Linux 运行which go查看实际调用位置 - 若返回空或指向旧版本,说明存在多版本冲突或 PATH 配置错误
用 go env 核对关键路径是否合理
即使 go version 能跑,GOROOT 或 GOPATH 错了也会导致后续依赖拉取失败、模块初始化异常等问题。
-
go env GOROOT应指向 Go 安装根目录(如/usr/local/go),不能是/usr/local/go/bin -
go env GOPATH默认是$HOME/go,现代项目虽不强依赖它,但go install生成的二进制会放在这里的bin/下 - 若
GOROOT为空或路径不存在,Go 无法加载标准库(fmt、os等包会报cannot find package)
写个 hello.go 并 go run 验证编译链路
这一步绕不开——环境变量全对,不代表编译器和链接器能协同工作。
package mainimport "fmt"
func main() { fmt.Println("Hello, Go!") }
- 在任意干净目录下保存为
hello.go,然后执行go run hello.go - 成功输出即证明:源码解析、语法检查、编译、链接、运行全部通路正常
- 若报错
exec: "gcc": executable file not found(Linux/macOS),说明缺少 C 工具链(gcc或clang),某些标准库(如net)依赖它;Windows 的 MinGW 通常随安装包自带 - 不要用
go build后双击运行(尤其 Windows),而是用终端执行生成的文件,避免权限或路径问题干扰判断
测试模块功能:go mod init + 外部依赖拉取
Go 1.16+ 默认启用模块模式,若 GO111MODULE 是 off,go get 会尝试走 GOPATH 旧模式,大概率失败。
- 运行
go env GO111MODULE,如果不是on,执行go env -w GO111MODULE=on - 推荐顺手配代理加速:
go env -w GOPROXY=https://www.php.cn/link/b6512ba2ef13d7241ba28dbf20bff5a7 - 创建测试目录,执行:
go mod init testmod echo 'package main; import "rsc.io/quote"; import "fmt"' > main.go echo 'func main() { fmt.Println(quote.Hello()) }' >> main.go go run main.go首次运行应自动下载rsc.io/quote并输出Hello, world.;失败则大概率是网络或代理配置问题
真正容易被忽略的是:标准库不需要“安装”,它就在 $GOROOT/src 里,但如果你手动改过 GOROOT 或删过 src 目录,go run 就会静默失败——此时 go version 和 go env 都看似正常,唯独 import 报错,得靠 ls $GOROOT/src | head 实锤。










