できない.dev

go.mod

別名: go mod file / go.mod ファイル / Goモジュールファイル

go.mod は Go モジュールの定義ファイル。
モジュールパス、必要な Go のバージョン、依存モジュールとそのバージョンを記述し、モジュールのルートに置く。
go コマンドが依存解決の起点にする。

公開:

定義

go.modGo のモジュールを定義するテキストファイルである。
そのモジュールのモジュールパス、ビルドに必要な Go の最低バージョン、依存する他モジュールとそのバージョンを宣言する。
モジュールのルートディレクトリに 1 つ置き、go buildgo test などの go コマンドはここを起点に依存を解決する。

詳細

先頭の module 行がモジュールパスを、go 行が必要な言語バージョンを示す。require は依存モジュールと最小バージョンを列挙する。replace を使うと依存先をローカルディレクトリや別バージョンへ差し替えられ、exclude は特定バージョンを除外する。go mod tidy を実行すると、ソースの import を走査して過不足のある require を自動で追加・削除し、go.sum も更新する。

よくある誤解

go.modgo.sum は役割が違う。go.mod は「必要な依存とバージョン」を宣言するのに対し、go.sum は取得した各モジュールのハッシュを記録して改ざんを検知する検証用ファイルである。go.sum を手で書くことは基本的にない。

関連

見つからないエラーはGo で「go.mod file not found in current directory」が解決できない、replace の不具合はGo の go.mod の replace でローカルモジュールが参照できないを参照。