【Go言語】つぶやきgo mod

Contents

go mod initとかgo.modとか

Go言語のモジュールモードでのあれこれについて勉強してみたメモです。

go mod init

依存関係の定義と管理のためのファイル=go.modを作成するコマンドです。

go mod init github.com/user-name/module-name

go get

指定したモジュールをダウンロードするためのコマンドです。ダウンロードがうまくいくと自動的にgo.modgo.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版』松木雅幸 他/技術評論社)

私はとりあえず「不要モジュールの削除と新規モジュールの追加をしてくれる」とざっくりと理解しました。

参考リンク

最新情報をチェックしよう!