golang-standards 社區提供了一個golang 項目的參考結構,同時提供了比較完整的說明
go 目錄
- /cmd
項目的主干,次目錄應該足夠簡單 - /interenal
內部的,不需要分享到外部的,這個屬於golang 內部的一個特性,我們也會在好多開源項目中看到 - /pkg
可復用的一些代碼庫 - /vendor
vendor 模式的包,現在推薦的玩法是go modules 功能
服務應用模式
- /api
關於openapi/swaggeer 規范的json 模式文件
web 應用模式
- /web
靜態web資源,服務器模版以及單頁面應用。。。
通用應用
- /config
配置文件模版或者more 嗯配置 - /init
system init 管理的腳本 - /scripts
構建,安裝,分析等的腳本 - /build
打包以及持續集成的 - /deployments
關於iaas paas,以及部署的,也可以水用/deploy 命名 - /test
關於程序測試的
其他目錄
- /docs
設計以及用戶文檔 - /tools
項目的支持工具,工具可以從/pkg 以及/inteernal 導入 - /examples
公共實例 - /thrid_party
外部輔助工具和,或者其他三方工具 - /githooks
git hooks - /assets
與代碼庫共享的(圖像,徽標) - /websitee
關於項目的website 文檔,可以使用github pages 。。。
不應該用的目錄
- /src
以前好多項目使用的是src 模式,已經不推薦使用了
參考資料
https://github.com/golang-standards/project-layout
https://github.com/danceyoung/paper-code/blob/master/package-oriented-design/packageorienteddesign.md