Go 應用程式專案的基本布局
- 前言
- Go目錄
- 服務應用程式目錄
- Web應用程式目錄
- 通用應用目錄
- 其他目錄
- 不應該擁有的目錄
前言
最近在作業中發現,專案的代碼量的增長,如果都擠在一個檔案里閱讀性就太差了,良好的目錄與檔案結構十分重要,尤其是團隊合作的時候,良好的目錄與檔案結構可以減少很多不必要的麻煩,本文對Go專案的結構進行了一些總結,講述通用的Go應用程式專案的一個基本布局,
Go目錄
/cmd
這是專案的主干部分,每個應用程式的目錄名應該與想要的可執行檔案的名稱相匹配(如/cmd/myapp)
注意:這個目錄中不要放置太多的代碼,通常是有一個小的main函式,從別的目錄匯入代碼或者呼叫代碼,/internal
私有應用程式和庫代碼,可以選擇在internal包中添加一些額外的結構,來分割共享和非共享的內部代碼,/pkg
外部應用程式可以使用的庫代碼,vendor
應用程式依賴項,如新的內置Go Modules功能,可以使用go mod vendor命令創建/vendor目錄,
注意:如果未使用默認情況下處于啟用狀態的 Go 1.14,則可能需要在go build命令中添加-mod=vendor標志,
服務應用程式目錄
/api
OpenAPI/Swagger 規范,JSON 模式檔案
Web應用程式目錄
/web
特定于 Web 應用程式的組件:靜態 Web 資產、服務器端模板和 SPAs,
通用應用目錄
/configs
組態檔模板或默認配置,/init
System init(systemd,upstart,sysv)和 process manager/supervisor(runit,supervisor)配置,/scripts
執行各種構建、安裝、分析等操作的腳本,/build
打包和持續集成,/deployments
IaaS、PaaS、系統和容器編配部署配置和模板(docker-compose、kubernetes/helm、mesos、terraform、bosh),/test
額外的外部測驗應用程式和測驗資料,
其他目錄
/docs
設計和用戶檔案(除了 godoc 生成的檔案之外)/tools
這個專案的支持工具,注意,這些工具可以從/pkg和/internal目錄匯入代碼,/examples
應用程式和/或公共庫的示例,/third_party
外部輔助工具,分叉代碼和其他第三方工具,/githooks
Git hooks,/assets
與存盤庫一起使用的其他資產(影像等)/website
如果不使用 Github 頁面,則在這里放置專案的網站資料,
不應該擁有的目錄
/src
有些 Go 專案確實有一個src檔案夾,但這通常發生在開發人員有 Java 背景,在Java中它是一種常見的模式,如果可以的話,盡量不要采用這種 Java 模式,
參考:https://github.com/golang-standards/project-layout
本文是一個簡短的總結,如果還有細節上不太明白的地方,可以去這個網站上多看看研究研究,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/233921.html
標籤:區塊鏈
上一篇:【paypal錯誤分析】PayPal API: Exception: 401 when accessing https://api.sandbox.paypal.com/v1/oauth2/token
