Skip to content

项目结构

sh
/go-layout
├── .run // goland 运行文件
├── cmd // 项目入口
|  └── server
|     ├── app.go // 应用实例,可以自定义服务实例
|     ├── main.go
|     ├── wire.go // wire来维护依赖注入
|     └── wire_gen.go
├── conf
|  └── bootstrap.json
├── dep // 生成的依赖文件
├── internal  // 内部不对外暴露的代码,业务逻辑都在这下面
|  ├── biz    // 业务逻辑的组装层,类似DDD的domain层,data类似DDD的repo,而repo接口在这里定义,使用依赖倒置的原则。
|  |  ├── core.go
|  |  └── demo.go
|  ├── conf   // 项目配置
|  |  ├── bootstrap.go
|  |  ├── core.go
|  |  └── data.go
|  ├── data   // 业务数据访问,包含cache,db等封装,实现了biz的repo接口。在这里会把data与dao混装在一起,data偏重业务的含义,它主要做的是将领域对象重新拿出来
|  |  ├── core.go
|  |  └── demo.go
|  ├── dep // 其他依赖在这里实现,通过wire倒装到具体需要的地方
|  |  ├── core.go
|  |  └── logger.go
|  ├── server // 服务实例的相关代码
|  |  ├── core.go
|  |  ├── grpc.go
|  |  ├── register.go // 服务注册
|  |  └── server.go
|  └── service // 实现了api定义的服务层,类似DDD的application层,处理DTO到biz领域实体的转换(DTO->DO),同时协同各类biz交互,但是不应处理复杂逻辑
|     ├── core.go
|     ├── demo.dto.go
|     ├── demo.go
|     └── remote.go // 远程调用服务的实例化
├── LICENSE
├── README.md
├── buf.gen.yaml    // buf cli配置文件
├── go.mod
├── go.sum
└── run.sh          // 服务部署shell脚本

Released under the MIT License