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/

更多文章
  • 2017年必装的VIM插件推荐
  • TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
  • TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
  • Lua Manual 阅读笔记
  • Golang Map 源码阅读与分析
  • MySQL 零碎知识 - MySQL必知必会
  • Golang slice 源码阅读与分析
  • 经典好书推荐(2017)
  • Golang log库 源码阅读与分析
  • 毕业后一年
  • ansible 简明教程
  • 自己写个搜索引擎
  • HTTP 路由的两种常见设计形式
  • Golang的short variable declaration
  • Greenlet和Stackless Python