Go项目两种结构
go 项目的目录结构没有一个官方的标准,但是有一些社区推荐的实践和约定。一般来说,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 程序员节活动,欢迎正在阅读的你也加入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。