目录结构

rpc服务

.
├── boot
│   └── boot.go              //需要初始化的方法在该处注册
├── cmd
│   ├── api
│   │   └── server.go        //服务启动入口
│   └── cobra.go             //cobra命令注册
├── config                    //服务配置文件夹
│   └── configs_local.yaml    //本地配置文件
├── global
│   └── global.go            //全局变量
├── internal
│   ├── dao                  //数据库操作
│   ├── enum                 //枚举、常量
│   ├── logic                //业务逻辑
│   ├── model                //数据模型
│   └── service              //服务
│       └── api.go           //服务接口
├── static
│   └── rpc-server.txt       //服务名
├── tools                    //工具类
│
└── main.go                  //入口文件
  • boot: 对应的初始化方法在boot目录下实现。在boot/boot.go中提供注册方法。
  • cmd: cobra命令注册,目前提供api服务启动入口。
  • config: 配置文件夹,配置文件为yaml格式,需要严格按照yaml格式书写,否则会报错。初始化创建时提供本地环境配置文件config/configs_local.yaml
  • global: 全局变量,用于自定义全局变量。
  • internal: 业务代码实现目录。internal/dao为数据库操作,internal/logic为业务逻辑,internal/model为数据模型,internal/service为服务接口。
  • static: 存放静态文件。
  • tools: 工具类。自定义的工具类需要在该目录下。

根据项目合理使用DDD分层架构

internal层下的目录结构可以自定义,但是需要保证每个目录下的文件都是同一类型的文件,例如internal/dao下的文件都是数据库操作文件, internal/logic下的文件都是业务逻辑文件。

http服务

.
├── cmd
│   ├── api
│   │   └── server.go        //服务启动入口
│   └── cobra.go             //cobra命令注册
├── config                    //服务配置文件夹
│   └── configs_local.yaml    //本地配置文件
├── internal
│   ├── middleware           //自定义中间件
│   ├── route                //路由管理
│   │   └── route.go         //提供基础路由
│   └── service              //服务
├── static
│   └── http-server.txt       //服务名
│ 
└── main.go                  //入口文件
  • cmd: cobra命令注册,目前提供api服务启动入口。
  • config: 配置文件夹,配置文件为yaml格式,需要严格按照yaml格式书写,否则会报错。初始化创建时提供本地环境配置文件config/configs_local.yaml
  • internal: 业务代码实现目录。internal/middleware用于存放自定义中间件,internal/route用于路由管理,internal/service用于服务接口实现,rpc调用。
  • static: 存放静态文件。