go开发规范

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