Go 编码规范指南

1. 前言

本规范基于 Google Go Style Guide 和业界最佳实践,旨在建立统一的编码风格,提高代码可读性、可维护性和团队协作效率。

规范等级说明

  • 必须(MUST): 强制要求,必须遵守

  • 推荐(SHOULD): 建议遵守,特殊情况可例外

  • 可选(MAY): 可参考使用


2. 代码格式化

2.1 【必须】使用 gofmt

所有代码必须使用 gofmtgoimports 格式化。

2.2 【推荐】行长度

  • 建议单行不超过 120 个字符

  • 超长行合理换行,保持可读性

例外情况:

  • import 语句

  • 工具生成的代码

  • struct tag

  • 长字符串字面量

2.3 【必须】空格和运算符


3. 导入规范

3.1 【必须】使用 goimports

  • 使用 goimports 自动管理导入

  • 按字母顺序排序

  • 分组管理,空行分隔

3.2 【必须】导入分组

3.3 【必须】路径规范

3.4 【推荐】别名使用


4. 错误处理

4.1 【必须】错误处理原则

4.2 【推荐】错误创建

4.3 【必须】panic 和 recover

4.4 【必须】类型断言


5. 命名规范

5.1 【必须】通用命名规则

  • 使用驼峰命名法(camelCase/PascalCase)

  • 导出成员首字母大写,私有成员首字母小写

  • 避免使用缩写,除非是广泛认知的

5.2 【必须】包命名

5.3 【必须】文件命名

5.4 【必须】变量和函数命名

5.5 【必须】常量命名

5.6 【必须】结构体和接口命名


6. 代码结构

6.1 【推荐】控制结构最佳实践

if 语句

for 和 range

switch 语句

6.2 【推荐】提前返回


7. 函数设计

7.1 【推荐】函数参数

7.2 【必须】资源管理

7.3 【推荐】方法接收器

7.4 【必须】代码度量限制

  • 文件长度: 不超过 800 行

  • 函数长度: 不超过 80 行

  • 嵌套深度: 不超过 4 层

  • 函数参数: 不超过 5 个

7.5 【必须】魔法数字


8. 注释规范

8.1 【必须】包注释

8.2 【必须】函数注释

8.3 【必须】类型注释

8.4 【必须】常量和变量注释


9. 测试规范

9.1 【必须】测试文件规范

9.2 【推荐】测试结构


10. 依赖管理

10.1 【必须】使用 Go Modules

10.2 【推荐】版本管理

10.3 【必须】提交规范

  • 必须提交: go.modgo.sum

  • 不要提交: vendor/ 目录(除非特定需求)

  • 建议: 定期执行 go mod tidy 清理依赖


11. 项目结构建议

11.1 【推荐】标准项目布局


12. 常用工具

12.1 【推荐】开发工具

12.2 【推荐】编辑器配置

建议配置编辑器/IDE 在保存时自动执行:

  • goimports

  • go vet

  • golint


13. 性能建议

13.1 【推荐】避免常见性能陷阱

13.2 【推荐】并发最佳实践


14. 安全建议

14.1 【必须】输入验证

14.2 【必须】敏感信息处理

最后更新于