Golang 实践经验

  • 编码风格:https://github.com/golang/go/wiki/CodeReviewComments
  • 编码规范:代码提交前使用 go fmt 格式化代码
  • 虽然Go推荐使用比较短的名字来命名,但是不要太短,例如l, a, r,容易看不懂,尤其是当嵌套层次深了之后。例如gRPC实现中的一段代码:
frame, err := t.framer.fr.ReadFrame()
if err == io.EOF || err == io.ErrUnexpectedEOF {
    return nil, err
}

如果对实现不够熟悉,很难知道t是什么,fr是什么。

  • 使用linter: go vet,或者 https://godoc.org/golang.org/x/lint
  • 使用 https://github.com/pkg/errors 代替标准库中的errors: https://banzaicloud.com/blog/error-handling-go/
  • 有逃逸分析,不要滥用指针,否则代价是GC,而GC则是影响Go高性能的常见原因:http://www.agardner.me/golang/garbage/collection/gc/escape/analysis/2015/10/18/go-escape-analysis.html
  • 如果是Web应用,尽可能的遵守:https://12factor.net/

更多文章
  • Golang的反射
  • 把网站去掉CSS之后
  • 处理并发的方式
  • 常见的索引方式
  • Golang 实践经验
  • 高性能MySQL笔记第一章
  • 面试的一些技巧
  • HTTP/2 简介
  • 独立运营博客一年的一些数据分享
  • To B(usiness) 和 To C(ustomer)
  • 常见的软件架构套路
  • Cookie 中的secure和httponly属性
  • Google Ads使用体验
  • Go的custom import path
  • 如何挖掘二级子域名?