跳转到内容

代码规范

go-zero 遵循标准 Go 约定,同时有一些额外的规范。

所有代码必须通过 gofmt / goimports 格式化:

Terminal window
goimports -w ./...

CI 会拒绝存在格式问题的 PR。

元素约定示例
包名简短、小写、无下划线logxhttpx
接口描述性名词或 -er 后缀UserModelBreaker
构造函数NewXxxMustNewXxxNewCacheMustNewServer
错误变量ErrXxxErrNotFoundErrTimeout
配置结构体嵌入标准基础结构体RestConfRpcServerConf
  • 永远不要静默忽略错误。
  • 使用上下文包装错误:fmt.Errorf("createUser: %w", err)
  • 在包级别定义哨兵错误用于类型断言。
  • 单元测试与源文件放在同一包中:foo_test.go
  • 优先使用表驱动测试。
  • Mock 通过 mockgen 生成或手写最小桩。
  • 新包最低覆盖率目标:80%
Terminal window
go test -race -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
  • 所有导出符号必须有文档注释。
  • 注释使用完整的句子,以符号名称开头。
  • 非显而易见的逻辑应添加行内注释解释原因