go.modフォーマットのベストプラクティス
go.modのフォーマット規約とベストプラクティスを学びます:タブインデント、バージョン整列、ブロック構成、go mod tidyが生成する標準フォーマット。
Best Practices
詳細な説明
go.modフォーマットのベストプラクティス
一貫したフォーマット規約に従うことで、go.modファイルが読みやすく、保守しやすく、マージしやすくなります。
標準フォーマット
Goツールチェーンは標準的なgo.modフォーマットを定義しています:
module github.com/example/project
go 1.22.0
require (
github.com/gin-gonic/gin v1.9.1
github.com/spf13/cobra v1.8.0
golang.org/x/text v0.14.0
)
require (
github.com/bytedance/sonic v1.10.0 // indirect
golang.org/x/crypto v0.17.0 // indirect
)
主要な規約
- タブインデント: ブロック内のエントリは単一タブ
- バージョン整列: バージョン番号は同じ列に整列
- ブロック構成: module → go → 直接require → 間接require → replace → exclude → retract
- 空行: 各ブロック間に1行の空行
- アルファベット順ソート: 各ブロック内のエントリをモジュールパスでソート
CI統合
CIパイプラインでフォーマットチェックを追加:
- name: Check go.mod formatting
run: |
go mod tidy
git diff --exit-code go.mod go.sum
ユースケース
一貫したフォーマット規約の採用は、コードレビューの摩擦を減らし、マージコンフリクトを最小化します。CIとpre-commitフックでgo.modフォーマットを強制するチームは、フォーマットの議論に費やす時間を減らし、実際の依存関係の決定に時間を使えます。