需新开终端验证go version而非仅信which go,因shell未加载新PATH;go mod init须避让GOPATH/src目录;go run要求文件名以.go结尾、包名为main且含func main();国内务必配置GOPROXY=https://goproxy.cn,direct。

Go 环境装完不等于能用,go run 报错、GOROOT 和 GOBIN 混乱、模块初始化失败——这些都不是配置没生效,而是环境变量和项目结构没对齐。
验证 go 命令是否真可用,别只信 which go
很多用户执行 which go 有输出就以为装好了,但实际运行 go version 可能报 command not found 或版本异常。根本原因是 shell 启动时未加载最新 PATH(比如 zsh 用户改了 ~/.zshrc 却没 source ~/.zshrc)。
- 必须新开一个终端再执行
go version,不能复用当前已打开的终端 - 如果仍失败,检查
echo $PATH是否包含 Go 安装路径(macOS 默认是/usr/local/go/bin,Linux 二进制包解压后需手动加) - Windows 用户注意:PowerShell 和 CMD 的环境变量不互通,得分别在两者中运行
go version
go mod init 失败常见于 GOPATH 和模块模式冲突
Go 1.16+ 默认启用模块模式(module-aware mode),但若当前目录在 $GOPATH/src 下,go mod init 会静默失败或生成错误的 module path。
- 先执行
go env GOPATH查看路径,然后确认当前工作目录不在该路径的src子目录内 - 新建项目务必在任意非
GOPATH路径下操作,例如直接在~/projects/myapp - 若已有旧项目,删掉
go.mod和go.sum后再go mod init example.com/myapp,不要省略域名前缀(哪怕本地开发)
go run 找不到 main 包?检查文件名和包声明一致性
新手常把文件命名为 main.go.txt 或 Main.go,或写成 package myapp 却期待它被当作可执行入口。
立即学习“go语言免费学习笔记(深入)”;
- Go 可执行程序要求:文件必须以
.go结尾、包名必须是main、且至少含一个func main() - 执行
go run *.go时,所有参与编译的.go文件必须同属一个包(即都写package main) - 如果项目里混着
package main和package utils,go run会报found packages main and utils
自测脚本要覆盖 GOPROXY 和私有模块场景
公司内网或离线环境经常禁用默认代理,但 go mod download 不报错也不提示,导致后续构建突然卡住。
- 运行
go env GOPROXY,确认不是空值或direct;国内推荐设为https://goproxy.cn,direct - 快速验证:新建空目录,执行
go mod init test && go get github.com/google/uuid@latest,5 秒内无响应就要查代理或网络策略 - 私有 Git 仓库需提前配置
git config --global url."ssh://git@your-git.com:".insteadOf "https://your-git.com/",否则go get会因认证失败中断
真正卡住的往往不是安装步骤,而是环境变量作用域、模块路径推导规则、以及 shell 缓存行为——这些细节不会报明确错误,只会让命令“看起来成功”却无法持续工作。


















