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
)

主要な規約

  1. タブインデント: ブロック内のエントリは単一タブ
  2. バージョン整列: バージョン番号は同じ列に整列
  3. ブロック構成: module → go → 直接require → 間接require → replace → exclude → retract
  4. 空行: 各ブロック間に1行の空行
  5. アルファベット順ソート: 各ブロック内のエントリをモジュールパスでソート

CI統合

CIパイプラインでフォーマットチェックを追加:

- name: Check go.mod formatting
  run: |
    go mod tidy
    git diff --exit-code go.mod go.sum

ユースケース

一貫したフォーマット規約の採用は、コードレビューの摩擦を減らし、マージコンフリクトを最小化します。CIとpre-commitフックでgo.modフォーマットを強制するチームは、フォーマットの議論に費やす時間を減らし、実際の依存関係の決定に時間を使えます。

試してみる — go.mod Formatter

フルツールを開く