参照:Standard Go Project Layout

Go 目录

/cmd 💨

存放包含main函数的文件。
目录内的每一个文件在编译之后都会生成一个可执行的文件。

/internal 💨

存放项目私有的库代码。

  1. .
  2. ├── app
  3. ├── xxx
  4. ├── xxx.go
  5. └── xxx.go
  6. └── xxx
  7. ├── xxx.go
  8. └── xxx.go
  9. └── pkg
  10. ├── xxx.go
  11. └── xxx.go

/pkg 💨

存放安全的、可供外部程序使用的库代码。

/vendor 💨

存放项目依赖的其它第三方库。
不需要提交到git。

服务应用程序目录

/api 💨

OpenAPI / Swagger规范,JSON模式文件,协议定义文件。

Web应用程序目录

/web 💨

存放web服务需要使用的静态文件,如template。

  1. .
  2. └── template
  3. ├── xxx.tpl
  4. └── xxx.tpl

通用应用程序目录

/configs 💨

存放配置文件。

/init 💨

服务启停脚本。

/scripts 💨

其它脚本,如编译、安装、测试和分析等等。

/build 💨

持续集成目录。

  1. 云 (AMI), 容器 (Docker), 操作系统 (deb, rpm, pkg)等的包配置和脚本放到 /build/packages 目录内;
  2. CI(travis,circle,drone)的配置和脚本放在/build/ci 目录内;
    1. .
    2. ├── ci
    3. ├── xxx
    4. └── xxx
    5. └── packages
    6. ├── xxx
    7. └── xxx

    /deployments 💨

    部署相关目录。

    /test 💨

    其它测试目录,如功能测试和性能测试等。

    其它目录

    /docs 💨

    项目相关文档,如系统说明、功能说明和表结构说明。

    /tools 💨

    常用的工具和脚本,可以引用 /internal/pkg 里的库。

    /examples 💨

    应用程序或公共库的示例。

    /third_party 💨

    外部帮助工具和其它第三方引用程序,如Swagger。

    /githooks 💨

    git钩子。

    /assets 💨

    其它静态文件,如logo、icon等。

    /website 💨