这个项目能做什么

本仓库提供了一套Go应用中常用的历史及新兴项目布局模式。它并非Go核心团队定义的官方标准,而是社区共同努力记录Go生态系统中观察到的约定俗成的规范。 该布局定义了以下关键目录: - /cmd:主应用程序;每个子目录对应一个可执行文件名,包含从/internal和/pkg导入代码的最小main函数。 - /internal:私有应用程序和库代码,自Go 1.4起由Go编译器强制实施以防止外部导入。可嵌套在任意层级。 - /pkg:面向外部使用的库代码。表明其他用户可以安全地导入这些代码,虽然/internal是编译器强制实施的私有包替代方案。 - /vendor:通过Go Modules(go mod vendor)管理的应用依赖。 - /api:OpenAPI/Swagger规范、JSON schema文件、协议定义。 - /web:静态Web资源、服务端模板、SPA应用。 - /configs:配置文件模板或默认配置。 - /init:系统初始化(systemd、upstart、sysv)和进程管理器配置。 - /scripts:构建、安装、分析脚本,以保持根目录Makefile简洁。 - /build:打包(AMI、Docker、deb、rpm)和CI配置。 - /deployments:IaaS/PaaS、容器编排部署配置(docker-compose、kubernetes/helm、terraform)。 - /test:额外的外部测试应用和测试数据。 - /docs、/tools、/examples、/third_party、/githooks、/assets、/website:用于文档、工具、示例、外部辅助工具、git钩子、资源和网站数据的支撑目录。 README明确建议避免使用/src目录(Java惯例),并推荐小型项目或概念验证从简单开始(单个main.go和go.mod),随着项目增长再采用更多结构。推荐使用Go Modules(自Go 1.14起已投入生产)、gofmt以及staticcheck进行格式化和代码检查。README支持18种以上语言,包括中文、日文、韩文、法文、西班牙文、俄文、印地文、孟加拉文等。