Golang项目的最佳实践目录结构如下:
project/
|--bin/ # 可执行文件
|--cmd/ # 命令
| |--cmd1/
| |--cmd2/
|--pkg/
| |--pkg1/
| |--pkg2/
|--vendor/ # 第三方依赖
|--docs/ # 文档
|--.gitignore
|--README.md # 项目说明
|--Makefile
- bin目录用于放可执行文件,通常只有一个 main.go 文件;
- cmd目录用于存放不同用途的命令程序,每个子目录代表一个可以独立build 的命令;
- pkg目录放项目内可复用的包,开发人员可以在cmd和pkg目录间复用包;
- vendor目录放第三方依赖包;
- docs目录用于存放项目相关的文档;
- .gitignore用于git仓库屏蔽不需要推送的文件;
- README用于简要介绍项目信息;
- Makefile 用于定义build规则。
该目录结构具有以下特点:
- 隔离:cmd和pkg目录下的代码隔离,降低耦合度
- 复用:pkg目录下的包可在cmd和pkg之间共享
- 独立:每个cmd目录代表一个独立build的命令或应用
- 分层:cmd→pkg→vendor,第三方依赖拆分到vendor中
- 文档丰富:提供相关文档和说明
- 效率高:提供快速build脚本
总的来说,该项目架构实现了:
- 隔离
- 复用
- 独立
- 分层
- 文档丰富
- 效率高
这些特点可以保证项目结构清晰、包间耦合低、便于维护管理。