チーム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レビューによって行われます。