熟知Go语言的一切
诞生与演进
选择适当的go语言版本
理解go语言的设计哲学
使用go语言原生编程思维来写go 代码
项目结构,代码风格与标志符命名
使用得到公认且广泛使用的项目结构
提交前使用gofmt 格式化源码
使用Go 命名惯例队标识符进行命名
声明,类型,语句与控制结构
使用一致的变量声明形式
使用无类型常量简化代码
使用iota 实现枚举变量
尽量定义零值可用的类型
使用符合字面值作为初值构造器
了解切片实现原理并高效使用
了解map 实现原理并高效使用
了解string 实现原理并高效使用
理解go 语言的包导入
理解go 语言表达式的求值顺序
理解go 语言代码块与作用域
了解go 语言控制语句惯用法及使用注意事项
函数与方法
在init函数中检查包级变量的初始状态
让自己习惯于函数是“一等公民”
使用defer 让函数更简洁,更健壮
理解方法的本质以选择正确的receiver 类型
方法集合决定接口实现
了解变长参数函数的妙用
接口
了解接口类型变量的内部表示
尽量定义小接口
尽量避免使用空接口作为函数参数类型
使用接口作为程序水平组合的连接点
使用接口提高代码的可测试性】
并发编程
优先考虑并发设计
了解goroutine 的调度原理
掌握Go并发模型和常见并发模式
了解channel 的妙用
了解sync 包的正确用法
使用atomic 包实现伸缩性更好的并发读取
错误处理
了解错误处理的四种策略
尽量优化反复出现的 if err != nil
不要使用panic 进行正常的错误处理