Uber Go 风格指南中文版
uber_go_guide_cnUber Go语言编码规范Uber是世界领先的生活出行服务提供商,也是Go语言的早期adopter,根据Uber工程博客的内容,大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累,有大量Go实现的内部工具被Uber开源到github上,诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部..
·
uber_go_guide_cn
Uber Go语言编码规范
Uber是世界领先的生活出行服务提供商,也是Go语言的早期adopter,根据Uber工程博客的内容,大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累,有大量Go实现的内部工具被Uber开源到github上,诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github,经过一年的积累和更新,该规范已经初具规模,并受到广大Gopher的关注。本文是该规范的中文版本,并”夹带“了部分笔者的点评,希望对国内Gopher有所帮助。
目录
- 介绍
- 指导原则
- 指向interface的指针
- 接收器(receiver)与接口
- 零值Mutex是有效的
- 在边界处拷贝Slices和Maps
- 使用defer做清理
- Channel的size要么是1,要么是无缓冲的
- 枚举从1开始
- 错误类型
- 错误包装(Error Wrapping)
- 处理类型断言失败
- 不要panic
- 使用go.uber.org/atomic - 性能
- 优先使用strconv而不是fmt
- 避免字符串到字节的转换 - 规范
- 相似的声明放在一组
- import组内的包导入顺序
- 包名
- 函数名
- 导入别名
- 函数分组与顺序
- 减少嵌套
- 不必要的else
- 顶层变量声明
- 对于未导出的顶层常量和变量,使用_作为前缀
- 结构体中的嵌入
- 使用字段名初始化结构体
- 本地变量声明
- nil是一个有效的slice
- 小变量作用域
- 避免裸参数
- 使用原始字符串字面值,避免转义
- 初始化结构体引用
- 格式化字符串放在Printf外部
- 命名Printf样式的函数 - 模式
- 测试Tables
- 功能选项
说明:由于csdn 页面布局问题。请移步github查看具体内容
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)