go version报“command not found”说明path未配置正确;需检查linux/macos的~/.zshrc或~/.bashrc是否添加/usr/local/go/bin并source,windows则确认系统path包含go的bin目录,且重启终端生效。

go version 验证失败说明环境没装好
运行 go version 报 “command not found” 或直接无输出,基本就是 PATH 没配对。Linux/macOS 用户检查 ~/.bashrc 或 ~/.zshrc 是否漏加了 /usr/local/go/bin;Windows 用户确认系统环境变量里 PATH 包含了 Go 安装目录下的 bin 子目录。别信“安装完就自动生效”,重启终端或执行 source ~/.zshrc 才行。
go mod init 后 go.sum 为空或依赖拉不下来
国内直连 proxy.golang.org 常超时或 403,导致 go get 卡住、go.sum 不生成。临时解决:运行 go env -w GOPROXY=https://goproxy.cn,direct(推荐清华源 https://mirrors.tuna.tsinghua.edu.cn/goproxy/ 也行)。注意 direct 必须保留,否则私有模块会失败。另外,go mod tidy 要在项目根目录下执行,且确保 go.mod 已存在——空目录下直接跑会报错。
用 gin.Default() 启动后访问 404 或连接被拒绝
常见原因有三个:
• router.Run(":8080") 写成了 router.Run("8080")(少冒号,监听地址格式错误);
• 端口被占用,netstat -an | grep 8080 查一下,换端口重试;
• 路由注册在 router.Run() 之后——Go 是顺序执行,写反了函数根本没注册上。建议把路由定义集中放在 main() 开头几行,避免遗漏。
http.ListenAndServe 用 nil 第二个参数时日志和错误难排查
http.ListenAndServe(":8080", nil) 看着省事,但一旦出错(比如端口冲突、TLS 配置错),只会静默退出,控制台没提示。换成显式传入 http.Server 实例更可控:
server := &http.Server{
Addr: ":8080",
Handler: nil,
}
fmt.Println("Starting server on", server.Addr)
log.Fatal(server.ListenAndServe())
这样能捕获 log.Fatal 的 panic 信息,也方便后续加 ReadTimeout、WriteTimeout 等配置。框架用户同理:Gin 的 router.Run() 底层也是封装了 http.Server,但自定义实例才能精细控制生命周期和错误流。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











