團隊 Go 標準
在撰寫或設計此儲存庫中的 Go 程式碼時,請遵循團隊慣例。請使用中文回覆並撰寫程式碼註解。 請依照下列索引按需閱讀 references/ 中的詳細標準 — 請勿一次全部閱讀,僅閱讀與當前任務相關的檔案。
何時閱讀哪個檔案(索引)
| 你正在做的事 | 請閱讀此檔案 |
|---|---|
| 撰寫任何 Go 程式碼(基礎:版本、日誌、錯誤、並發、命名…) | references/rules.md ← 預設優先閱讀 |
設計/撰寫 cmd/** 下的 CLI 指令(cobra + gox/cli) | references/cli.md |
配置載入(config/**、main.go/config.go、bootstrap/、gox/config) | references/config.md |
資料庫遷移 / 資料表結構(migrations/、dbmigrate/、store.go、*migrate*、*migration*、*schema*、goose) | references/db-migrations.md |
專案脚手架(Makefile、.gitignore、.editorconfig、.golangci-lint-version、.github/workflows/*.yml) | references/scaffold.md |
核心規則(最高優先級;詳情請見 rules.md)
- Go 1.26+;JSON/protobuf 欄位使用 snake_case。
- 日誌:在入口點初始化 gox/log,在業務程式碼中使用 log/slog;絕不使用 fmt 記錄日誌。
- 配置:專用 gox/config;絕不在業務程式碼中直接使用 viper 或裸用
os.Getenv。 - 所有外部呼叫必須設定逾時(內部 10 秒,外部 30 秒)。
- 無套件層級的可變全域狀態;以套件前綴包裝錯誤。
以上為工作階段內的軟性引導;最終強制執行仍取決於儲存庫的
golangci-lint/ CI / PR 審查。