Contents
go mod initとかgo.modとか
Go言語のモジュールモードでのあれこれについて勉強してみたメモです。
go mod init
依存関係の定義と管理のためのファイル=go.modを作成するコマンドです。
go mod init github.com/user-name/module-name
go get
指定したモジュールをダウンロードするためのコマンドです。ダウンロードがうまくいくと自動的にgo.mod
、go.sum
の修正を行います。もしgo.sum
がなければ作成します。
go get github.com/hosii/module
ちなみにgo.sumには依存モジュールのチェックサム(=ファイル、データの一意性を示すハッシュ値)が記録されます。Goではこのチェックサムを用いて、モジュールの内容に変更があったかどうか確かめているようです。
ここまで書いておいてなんですが、《Go1.17では、モジュール外からコマンドのバイナリを go get を使ってインストールした場合、警告が出るようになりました》。ええと、モジュールの内外の区別が難しいぞ・・
とりあえず、「モジュール外」からのインストールにはgo get
の代替としてgo install
が利用できます。
go install github.com/hosii/module
go mod tidy
go mod tidy
は、go.modに記述された依存を整理整頓して、実行環境に関わらない「完全な依存ツリー」を構築するためのコマンドです。
go mod tidyを使うことで、別環境で必要な依存や、テストのみ依存しているパッケージも正しく抽出できます。
(『みんなのGo言語 改訂2版』松木雅幸 他/技術評論社)
私はとりあえず「不要モジュールの削除と新規モジュールの追加をしてくれる」とざっくりと理解しました。