go开发规范
- 尽量(禁止)忽略error,如果不需要处理,也要判断打印。
- defer 只有在锁,关闭函数 的地方使用。
- 禁止使用
fmt.Println
,Println
,log.Fatal
打印日志。 fmt.Println,Prinln都是同步打印,会有io阻塞. 推荐使用:log.Debug(),Info, error,warn。
- redis使用管道写入统一使用
Pipelined
函数,pipelined的函数中接受的cmd需要使用指针接受,不能立即使用。
- redis set对象时,该对象需实现
BinaryUnmarshaler
接口,如获取的时候使用scan,则需要实现BinaryMarshaler
接口,注意实现了BinaryMarshaler
接口后,再序列化话需使用json.NewEncoder()
方式进行序列化,切勿使用json.Marshal
。
- 脚本中的同业务写入redis需要使用redis pipline处理。
- mysql使用统一使用
Transaction
如使用原生redis库,按附录1封装。
- xorm插件mysql批量查询时使用find,而不是
FindAndCount
,FindAndCount
是两条单独sql组成,使用场景一般是分页查询中使用。