ホームページ >バックエンド開発 >Golang >go workspaceを使用して依存関係をローカルにロードするにはどうすればよいですか?

go workspaceを使用して依存関係をローカルにロードするにはどうすればよいですか?

王林
王林転載
2024-02-09 16:15:09640ブラウズ

go workspaceを使用して依存関係をローカルにロードするにはどうすればよいですか?

php エディタ Baicao では、Go ワークスペースを使用して依存関係をローカルにロードする方法を紹介します。 Go 言語プロジェクトを開発するとき、私たちはさまざまなサードパーティのライブラリや依存関係を使用することがよくあります。これらの依存関係の管理と読み込みを容易にするために、Go 言語は強力なワークスペース メカニズムを提供します。ワークスペース パスを設定し、 go mod コマンドを使用すると、プロジェクトに必要な依存関係を迅速かつ簡単にロードして管理できるため、開発効率とコードの品質が向上します。 go workspace を使用して依存関係をローカルにロードする方法を詳しく見てみましょう。

質問の内容

いくつかの go モジュールを含む go ワークスペース プロジェクトがあります。 1 つのモジュールは、同じワークスペース内の別のモジュールに依存します。依存関係をインターネットからダウンロードせずにローカルで解決したいと考えています。

helloexample という 2 つのモジュールがあります。 helloexample に依存します。その構造は次のとおりです:

リーリー

go.work は:

リーリー

モジュール hello では、example -> hello モジュールから宣言された関数を使用する必要があります。 example/hellogo.mod は次のとおりです:

リーリー

hello ディレクトリで go get github.com/example/hello を実行すると、エラーが発生します:

リーリー

go は依然として、ローカル ワークスペースを参照するのではなく、github.com から依存関係をダウンロードしようとしているようです。 go に最初にローカル ディレクトリを強制的に参照させる方法はありますか?

完全なコードは次のとおりです: https://github.com/zhaoyi0113/go-workspace

解決策

go.mod ファイル内のモジュール名はプロジェクト構造に関連しています。そうしないと、ランダムな名前が付けられると他のライブラリと競合が発生し、依存関係を構築するときにどのライブラリをプルすればよいかが不明確になる可能性があります。

言い換えれば、GitHub からコードを取得するには、ディレクトリ構造が一致する必要があります。したがって、「example」ディレクトリの下にある go.mod ファイル内のモジュール名を次のように変更します。 リーリー

「hello」ディレクトリの場合:

リーリー

「hello」ディレクトリが「example」モジュールに依存する必要がある場合は、次のようにインポートします。

リーリー

ここで、バージョンを作成した場合、「xxxx」はバージョン番号になります。そうでない場合は、GitHub にプッシュしたコードの Git コミット ハッシュを使用できます。 「例」の Git ハッシュは、GitHub プロジェクト ページで見つけることができます。 「hello」ディレクトリで、次のコマンドを実行します:

リーリー

ただし、この方法では、GitHub にプッシュされたコードのみを取得できます。開発をローカルですばやくデバッグしたい場合は、go.mod ファイルに「replace」ディレクティブを追加できます。 リーリー

更新

プロジェクト構造を整理するにはパッケージ アプローチを使用することをお勧めします。モジュールはより独立しており、通常は異なるリポジトリに配置される必要があります。

リーリー

以上がgo workspaceを使用して依存関係をローカルにロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。