Go项目两种结构

go 项目的目录结构没有一个官方的标准,但是有一些社区推荐的实践和约定。一般来说,go 项目的目录结构可以分为两种类型:

结构化目录

├── build                   # 打包和持续集成
│   ├── docker              # Docker 镜像
│   ├── package             # 打包脚本
│   └── release             # 发布脚本
├── cmd                     # 主应用
│   └── myapp               # 应用入口
│       └── main.go         # main 函数
├── configs                 # 配置文件
│   └── config.yaml         # 配置文件模板或默认值
├── docs                    # 文档
├── init                    # 系统初始化(systemd, upstart, sysv)
│   └── myapp.service       # systemd 服务文件
├── internal                # 私有应用代码库
│   ├── app                 # 应用层
│   │   └── handler         # 处理器层
│   ├── biz                 # 业务逻辑层
│   ├── data                # 数据访问层
│   ├── pkg                 # 公共库代码
│   └── service             # 服务层
├── scripts                 # 脚本
│   ├── coverage.sh         # 测试覆盖率脚本
│   ├── lint.sh             # 代码质量检查脚本
│   └── test.sh             # 测试脚本
├── test                    # 测试数据或文件
├── third_party             # 第三方依赖(如 swagger ui)
├── Makefile                # Makefile 文件
├── go.mod                  # go mod 文件
└── README.md               # README 文件

平铺式目录

├── example                 # 示例代码
│   └── main.go             # 示例入口
├── foo.go                  # foo 包代码
├── bar.go                  # bar 包代码
├── go.mod                  # go mod 文件
└── README.md               # README 文件
本文参与了1024 程序员节活动,欢迎正在阅读的你也加入。

inight
503 声望100 粉丝

涉及到的技术栈欢迎提问、尽我所能回答。