工程化目录

模板1

project-root/
├── cmd/
│   └── server/
│       └── main.go                 # 程序入口
├── internal/                       # 私有应用代码
│   ├── handler/                    # HTTP处理器层
│   │   ├── user_handler.go
│   │   ├── auth_handler.go
│   │   ├── role_handler.go
│   │   └── permission_handler.go
│   ├── service/                    # 业务逻辑层
│   │   ├── user_service.go
│   │   ├── auth_service.go
│   │   ├── role_service.go
│   │   └── permission_service.go
│   ├── repository/                 # 数据访问层
│   │   ├── user_repository.go
│   │   ├── role_repository.go
│   │   └── permission_repository.go
│   ├── model/                      # 数据模型
│   │   ├── user.go
│   │   ├── role.go
│   │   ├── permission.go
│   │   └── base.go                 # 公共字段(ID, CreatedAt等)
│   ├── dto/                        # 数据传输对象
│   │   ├── request/
│   │   │   ├── user_request.go
│   │   │   ├── auth_request.go
│   │   │   └── common_request.go   # 分页等公共请求
│   │   └── response/
│   │       ├── user_response.go
│   │       ├── auth_response.go
│   │       └── common_response.go  # 统一响应格式
│   ├── middleware/                 # 中间件
│   │   ├── auth.go                 # JWT认证
│   │   ├── cors.go                 # 跨域
│   │   ├── logger.go               # 日志
│   │   ├── recovery.go             # 异常恢复
│   │   ├── rate_limit.go           # 限流
│   │   └── permission.go           # 权限校验
│   └── router/                     # 路由配置
│       ├── router.go               # 主路由
│       ├── api_v1.go               # v1版本API路由
│       └── api_v2.go               # v2版本API路由(可选)
├── pkg/                            # 可被外部应用使用的库
│   ├── jwt/                        # JWT工具
│   │   └── jwt.go
│   ├── validator/                  # 自定义验证器
│   │   └── validator.go
│   ├── utils/                      # 工具函数
│   │   ├── password.go             # 密码加密
│   │   ├── string.go
│   │   └── time.go
│   ├── logger/                     # 日志封装
│   │   └── logger.go
│   ├── database/                   # 数据库连接
│   │   └── mysql.go
│   ├── redis/                      # Redis连接(可选)
│   │   └── redis.go
│   └── errors/                     # 自定义错误
│       └── errors.go
├── config/                         # 配置文件
│   ├── config.go                   # 配置结构体
│   ├── config.yaml                 # 开发环境配置
│   ├── config.prod.yaml            # 生产环境配置
│   └── config.test.yaml            # 测试环境配置
├── migrations/                     # 数据库迁移文件
│   ├── 000001_create_users_table.up.sql
│   ├── 000001_create_users_table.down.sql
│   ├── 000002_create_roles_table.up.sql
│   └── 000002_create_roles_table.down.sql
├── scripts/                        # 脚本文件
│   ├── build.sh                    # 编译脚本
│   ├── deploy.sh                   # 部署脚本
│   └── init_db.sh                  # 数据库初始化脚本
├── docs/                           # 文档
│   ├── api/                        # API文档
│   │   └── swagger.yaml
│   └── README.md
├── test/                           # 测试文件
│   ├── integration/                # 集成测试
│   └── unit/                       # 单元测试
├── deployments/                    # 部署相关
│   ├── docker/
│   │   └── Dockerfile
│   ├── kubernetes/
│   │   ├── deployment.yaml
│   │   └── service.yaml
│   └── docker-compose.yaml
├── logs/                           # 日志目录(gitignore)
├── .gitignore
├── .env                            # 环境变量(gitignore)
├── .env.example                    # 环境变量示例
├── Makefile                        # Make命令
├── go.mod
├── go.sum
└── README.md

模板2

star-go/
├── api/                    # API 相关代码
│   ├── handlers/           # 处理器
│   └── routes/             # 路由定义
├── docs/                   # 文档
├── internal/               # 内部应用代码
│   ├── controllers/        # 控制器
│   ├── models/             # 数据模型
│   ├── repository/         # 数据仓库
│   └── services/           # 业务逻辑
├── logs/                   # 日志文件
├── pkg/                    # 可重用的包
│   ├── cache/              # 缓存系统
│   ├── config/             # 配置管理
│   ├── core/               # 应用核心
│   ├── database/           # 数据库连接
│   ├── logger/             # 日志系统
│   ├── middleware/         # 中间件
│   └── utils/              # 工具函数
├── config.yaml             # 配置文件
├── go.mod                  # Go 模块定义
├── go.sum                  # 依赖版本锁定
├── main.go                 # 应用入口
└── README.md               # 项目说明