1. ホーム
  2. go

[解決済み] go getコマンドとgo mod downloadコマンドの違いは何ですか?

2022-03-02 04:39:06

質問

Goモジュールについてよく理解しようとしているのですが、go getコマンドとgo mod downloadコマンドの違いに少し困惑しています。

go get コマンドは go.mod ファイルにあるモジュールの依存関係をメイン モジュール用に更新し、コマンド ラインにリストされたパッケージをビルドしてインストールします "。 https://golang.org/ref/mod#go-get

Go modのダウンロードは、次のように記述されているのに対して。

"ゴーモードのダウンロードコマンドは、指定されたモジュールをモジュールキャッシュにダウンロードします "。 https://golang.org/ref/mod#go-mod-download

go getがgo mod downloadが行わない依存関係管理を行うのは明らかですが、go getでパッケージをインストールするのと、go mod downloadでモジュールをモジュールキャッシュにダウンロードするのでは何が違うのでしょうか。

解決方法は?

あなたのモジュールの go.mod ファイルには、そのファイルが必要とする依存関係のバージョンが記録されています。これらの依存関係のソースコードは、ローカルキャッシュに保存されます。

go get に記載されている要件を更新します。 go.mod ファイルに記述します。また、これらの要件が自己一貫していることを確認し、必要に応じて新しい要件を追加して、コマンドラインで指定したパッケージによってインポートされるすべてのパッケージが、要件内の何らかのモジュールで提供されるようにします。

要件の更新と追加の副次的効果として , go get は、指定されたパッケージ (とその依存関係) を含むモジュールもローカルモジュールキャッシュにダウンロードします。

それに対して go mod download はしません。 は、新しい要件を追加したり、既存の要件を更新したりします。(せいぜい、既存の要件が自己一貫していることを確認する程度です。 go.mod ファイルを作成します)。ダウンロードするのは、あなたがリクエストした特定のモジュール バージョン (特定のバージョンをリクエストした場合) か、あなたの要件に登場するモジュールのバージョンのみです。