name: std-go description: 提供 Go 编码规范(基于 Google Go Style Guide)。当编写或 review Go 代码(.go 文件)时使用。
Go 编码规范
基于 Google Golang 代码规范,结合实际工程经验进行了调整和补充。
规范等级定义
| 等级 | 定义 |
|---|---|
| 必须(Mandatory) | 用户必须采用,代码扫描工具应将其视为错误 |
| 推荐(Preferable) | 用户理应采用,但如有特殊情况可以不采用 |
| 可选(Optional) | 用户可参考,自行决定是否采用 |
核心规则速查
| 类别 | 必须遵守 |
|---|---|
| 格式化 | 使用 gofmt 格式化代码 |
| import | 使用 goimports,禁止相对路径导入,标准包在最上 |
| 错误处理 | 必须处理 error,error 必须是最后一个返回值 |
| panic | 禁止用于一般错误处理,仅用于不变量断言 |
| 命名 | 驼峰式,包名小写无下划线,文件名小写下划线分隔 |
| 注释 | 导出名字必须有文档注释,格式 // Name 描述 |
| switch | 必须有 default 分支 |
| goto | 业务代码禁止使用 |
| 嵌套 | 深度不超过 4 层 |
| 代码行数 | 文件 ≤ 800 行,函数 ≤ 80 行 |
| 依赖管理 | 使用 go modules |
完整规范
详见 reference/full-standards.md,包含:
- 代码风格(格式化、换行、括号空格、import)
- 错误处理(error、panic、recover)
- 注释规范(包、结构体、方法、变量、常量、类型)
- 命名规范(包、文件、结构体、接口、变量、常量、函数)
- 控制结构(if、for、range、switch、return、goto)
- 函数规范(参数、defer、接收器、代码行数、嵌套、变量声明、魔法数字)
- 依赖管理和应用服务规范