常见错误排查
这一节整理初学 Go 时常见的问题。
一、找不到 go.mod
错误类似:
原因:当前目录不是 Go Modules 项目。
解决:
然后再运行:
二、导入了包但没使用
错误:
Go 不允许导入没使用的包。
删除没用的 import,或使用它。
格式化和整理:
三、变量声明但没使用
错误:
Go 不允许局部变量声明后不用。
错误示例:
如果暂时不用,可以删除。
不要为了绕过错误随便写 _ = name,除非你明确知道为什么要保留。
四、大小写导致访问不到
小写只能当前包访问,也不能被 encoding/json 当作导出字段处理。
如果要跨包访问或 JSON 编码:
五、nil 指针 panic
错误:
原因:访问了 nil 指针。
修复:
更重要的是检查为什么 user 会是 nil。
六、map 没初始化就写入
错误:
错误示例:
正确:
七、端口被占用
错误:
说明端口已经被其他程序占用。
解决:
- 换一个端口。
- 停掉占用端口的旧进程。
八、依赖下载慢
可以设置代理:
然后:
九、排查习惯
建议按顺序看:
- 错误第一行。
- 文件名和行号。
- 最近改过的代码。
- 是否忘记初始化。
- 是否 nil。
- 是否包名、导出名、模块名写错。
Go 的报错通常比较直接,认真读错误信息比盲目搜索更有效。

