基于 gooze-starter 快速构建 Go 服务并提供 Go 开发的 CLI 工具
🧠 旨在让 Go 服务的构建「更快、更清晰、更优雅」
可以先去 gooze-starter 文档中心 查看文档说明
- Go 1.24 或更高版本
注意 注意
⚠️ 由于目前没有发布 release 版本以及并未发布 tag ,务必使用以下命令安装
待稳定后将会发布 release 版本
go install github.com/soryetong/gooze-cli@main
# @main 是重点,@latest 可能不是期望的最新提交然后,进入你想存放的项目的目录中
gooze-cli init如果
go install成功,却提示找不到gooze-cli命令,那么需要先添加环境变量
运行该命令后,会提示你输入项目名、项目类型等,按照提示输入即可
运行完成后,会按照 Go 社区的项目最佳实践来生成一个优雅的 Go 项目结构,并生成相应的代码文件。
项目名称有以下要求:
-
不能包含汉字
-
不能包含非法字符(如 emoji、特殊符号等)
-
前后有空格不影响,代码会自动去掉,但是中间是不允许包含空格的
-
仅允许这些字符:
-
英文字母(A-Z / a-z)
-
数字(0-9)
-
中横线 - 和 下划线 _
-
当我们在一个项目中同时提供多个独立的 API 服务(管理后台、C端APP、C端Web等),每个端都有自己完整的 API 接口
那么实现方式肯定是 创建多个子目录
当这个选择为 true 时,目录结构如下
my-project/
├── api/ # API 描述文件目录
│ ├── admin/ # 管理后台端 API 描述
│ │ └── user.api
│ └── client/ # 客户端 API 描述
│ └── user.api
│
├── build/ # 构建相关脚本(如 Dockerfile、CI 脚本)
│ ├── scripts/ # 启动/部署等辅助脚本(如 build.sh)
│ │ └── gen.sh # 通用代码生成脚本
│ │ └── gen_*.sh # 代码生成脚本 *代表对应端
│ │ └── start_*.sh # 项目启动脚本 *代表对应端
│ └── docker/ # Dockerfile 或 compose 文件
│
├── cmd/ # 每个服务的启动入口
│ ├── admin/ # 管理后台服务入口
│ │ └── main.go
│ └── client/ # 客户端服务入口
│ └── main.go
│
├── configs/ # 应用级配置(YAML 格式)
│ ├── admin.yaml # admin 端配置文件
│ └── client.yaml # client 端配置文件
│
├── docs/ # 文档入口
│ ├── swagger/ # Swagger 文档
│ │ ├── admin/ # admin 接口文档
│ │ │ └── user.yaml
│ │ └── client/ # client 接口文档
│ │ └── user.yaml
│
├── internal/ # 核心业务代码(按端划分)
│ ├── admin/ # 管理后台模块
│ │ ├── handler/ # 控制器层(接收请求,返回响应)
│ │ ├── dto/ # 请求/响应的数据结构
│ │ ├── router/ # 路由定义
│ │ ├── service/ # 业务逻辑
│ │ └── bootstrap/ # 启动逻辑
│ └── client/ # 客户端模块(结构同 admin)
│
├── models/ # 通用数据库模型
│
├── static/ # 静态资源
│ ├── storage/ # 存放临时文件、用户上传文件、缓存等
│
├── test/ # 测试文件(单测、集成测试等)
│
├── .env.admin # 管理后台的环境变量文件
├── .env.client # 客户端的环境变量文件
├── .gitignore # Git 忽略文件
├── go.mod # Go 模块定义
├── go.sum # Go 依赖校验文件
└── README.md # 项目说明文档
当这个选择为 false 时,目录结构如下
my-project/
├── api/ # API 描述文件(如 user.api)
│ └── user.api
│
├── build/ # 构建相关脚本(如 Dockerfile、CI 脚本)
│ ├── scripts/ # 启动/部署等辅助脚本(如 build.sh)
│ │ └── gen_server.sh # 代码生成脚本
│ │ └── start_server.sh # 项目启动脚本
│ └── docker/ # Dockerfile 或 compose 文件
│
├── cmd/ # 程序入口
│ ├── server/ # 服务入口
│ │ └── main.go
│
├── configs/ # 应用配置文件
│ └── config.yaml # 主配置文件(可配合 .env 使用)
│
├── docs/ # 文档入口
│ ├── swagger/ # Swagger 接口文档
│ │ └── user.yaml
│
├── internal/ # 核心业务代码(推荐不导出,仅项目内部可用)
│ ├── handler/ # 控制器层(接收请求,返回响应)
│ ├── dto/ # 请求/响应的数据结构
│ ├── router/ # 路由定义
│ ├── service/ # 业务逻辑
│ └── bootstrap/ # 启动逻辑
│
├── models/ # 通用数据库模型
│
├── static/ # 静态资源
│ ├── storage/ # 存放临时文件、用户上传文件、缓存等
│
├── test/ # 单元测试 / 集成测试代码
│
├── .env # 环境变量文件(用于区分本地/测试/生产)
├── .gitignore # Git 忽略文件
├── go.mod # Go 模块定义
├── go.sum # Go 依赖校验文件
└── README.md # 项目说明文档
可以看到,创建多个子目录,主要是为了分层管理
目录结构没有什么大的差异,只是 api、cmd、internal 多了一个层级
如果你认为 gooze-cli 生成的目录结构你不满意,那你完全可以使用 gooze-starter 自行生成
更多信息,请查看 gooze-starter 介绍
