项目结构

go-zero 有自己的项目结构,一般都是通过 goctl 工具生成。

工程维度

  1. .
  2. ├── consumer
  3. ├── go.mod
  4. ├── internal
  5. └── model
  6. ├── job
  7. ├── pkg
  8. ├── restful
  9. ├── script
  10. └── service
  • consumer: 队列消费服务
  • internal: 工程内部可访问的公共模块
  • job: cron job 服务
  • pkg: 工程外部可访问的公共模块
  • restful:HTTP 服务目录,下存放以服务为维度的微服务
  • script:脚本服务目录,下存放以脚本为维度的服务
  • service:gRPC 服务目录,下存放以服务为维度的微服务

服务维度

  1. example
  2. ├── etc
  3. └── example.yaml
  4. ├── main.go
  5. └── internal
  6. ├── config
  7. └── config.go
  8. ├── handler
  9. ├── xxxhandler.go
  10. └── xxxhandler.go
  11. ├── logic
  12. └── xxxlogic.go
  13. ├── svc
  14. └── servicecontext.go
  15. └── types
  16. └── types.go
  • example:单个服务目录,一般是某微服务名称
  • etc:静态配置文件目录
  • main.go:程序启动入口文件
  • internal:单个服务内部文件,其可见范围仅限当前服务
  • config:静态配置文件对应的结构体声明目录
  • handler:handler 目录,可选,一般 http 服务会有这一层做路由管理,handler 为固定后缀
  • logic:业务目录,所有业务编码文件都存放在这个目录下面,logic 为固定后缀
  • svc:依赖注入目录,所有 logic 层需要用到的依赖都要在这里进行显式注入
  • types:结构体存放目录