4.2. Uber: Go语言 风格指南
全部章节目录:
- 4.2.1. English
- 4.2.2. Uber Go 语言编码规范
- 4.2.3. 版本
- 4.2.4. 目录
- 4.2.5. 介绍
- 4.2.6. 指导原则
- 4.2.6.1. 指向 interface 的指针
- 4.2.6.2. Interface 合理性验证
- 4.2.6.3. 接收器 (receiver) 与接口
- 4.2.6.4. 零值 Mutex 是有效的
- 4.2.6.5. 在边界处拷贝 Slices 和 Maps
- 4.2.6.6. 使用 defer 释放资源
- 4.2.6.7. Channel 的 size 要么是 1,要么是无缓冲的
- 4.2.6.8. 枚举从 1 开始
- 4.2.6.9. 使用 time 处理时间
- 4.2.6.10. Errors
- 4.2.6.11. 处理断言失败
- 4.2.6.12. 不要使用 panic
- 4.2.6.13. 使用 go.uber.org/atomic
- 4.2.6.14. 避免可变全局变量
- 4.2.6.15. 避免在公共结构中嵌入类型
- 4.2.6.16. 避免使用内置名称
- 4.2.6.17. 避免使用
init()
- 4.2.6.18. 追加时优先指定切片容量
- 4.2.6.19. 主函数退出方式 (Exit)
- 4.2.6.20. 在序列化结构中使用字段标记
- 4.2.6.21. 不要一劳永逸地使用 goroutine
- 4.2.7. 性能
- 4.2.8. 规范
- 4.2.8.1. 避免过长的行
- 4.2.8.2. 一致性
- 4.2.8.3. 相似的声明放在一组
- 4.2.8.4. import 分组
- 4.2.8.5. 包名
- 4.2.8.6. 函数名
- 4.2.8.7. 导入别名
- 4.2.8.8. 函数分组与顺序
- 4.2.8.9. 减少嵌套
- 4.2.8.10. 不必要的 else
- 4.2.8.11. 顶层变量声明
- 4.2.8.12. 对于未导出的顶层常量和变量,使用_作为前缀
- 4.2.8.13. 结构体中的嵌入
- 4.2.8.14. 本地变量声明
- 4.2.8.15. nil 是一个有效的 slice
- 4.2.8.16. 缩小变量作用域
- 4.2.8.17. 避免参数语义不明确 (Avoid Naked Parameters)
- 4.2.8.18. 使用原始字符串字面值,避免转义
- 4.2.8.19. 初始化结构体
- 4.2.8.20. 初始化 Maps
- 4.2.8.21. 字符串 string format
- 4.2.8.22. 命名 Printf 样式的函数
- 4.2.9. 编程模式
- 4.2.10. Linting