ホームページ  >  記事  >  バックエンド開発  >  go コンパイラーは、メインで使用されないパッケージをコンパイルしますか?

go コンパイラーは、メインで使用されないパッケージをコンパイルしますか?

王林
王林転載
2024-02-09 14:27:341088ブラウズ

go コンパイラーは、メインで使用されないパッケージをコンパイルしますか?

php editor Strawberry は、メインで使用されたことのないパッケージを go コンパイラーがコンパイルするかどうかについての質問に喜んで答えます。 Go 言語では、コンパイラーは未使用のパッケージをコンパイルしません。これは、Go 言語の設計コンセプトがシンプルかつ効率的であることであり、未使用のコードのコンパイルに時間とリソースを無駄にしないためです。したがって、メイン パッケージに他のパッケージが導入されていて、その中の関数や変数が使用されていない場合、コンパイラはこれらの未使用のパッケージを無視するため、コンパイル速度とプログラムの実行効率が向上します。

質問内容

3つのパッケージA、B、Cなどを含むgoモジュールがあるとします。 main.go とそのすべてのインポートでは、パッケージ A と B のみが使用されています。私の質問は、go build によって生成されたバイナリにはパッケージ C のコードが含まれているかということです。

回避策

バイナリ ビルドには、main から参照されるすべてのシンボルの推移的クロージャーのみが含まれます。これには、インポートされたパッケージの関数とデータ、および使用されるタイプのすべてのメソッドのみが含まれます。したがって、パッケージ内に一度も使用されない関数がある場合、その関数はバイナリには表示されません。ただし、未使用のメソッドを含むデータ型を使用すると、これらのメソッドはバイナリ ファイル内に存在します。

以上がgo コンパイラーは、メインで使用されないパッケージをコンパイルしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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