各ディレクトリを明示的にインポートせずに Go にサブパッケージをインポートする
単一のディレクトリに複数のサブパッケージが含まれるプロジェクト構造を操作する場合、各サブパッケージを個別にインポートするのは不便です。これに対処するために、開発者は、ワイルドカード表記を使用してディレクトリ内のすべてのサブパッケージをインポートする方法はないかと考えるかもしれません。
ユーザーが提供した例には、次のような構造のプロジェクトが含まれています。
main.go (root directory) |- entities |- bar |- bar.go |- basic.go |- req.go
以下に示すように一般的な表記法を使用して bar サブパッケージをインポートしようとすると、コンパイル エラーが発生します:
package main import bar "one/entities/bar/*" func main(){ }
残念ながら、Go のインポート構文はワイルドカード インポートをサポートしていません。エラー メッセージは、指定されたディレクトリに Go ファイルがないことを明らかにしています:
src/main/main.go:3:8: no Go files in /home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar
ワイルドカードを使用してサブパッケージをインポートする代わりに、インポートするサブパッケージを明示的に指定することをお勧めします。これにより、依存関係が明確に定義され、他の開発者が簡単に理解できるようになります。
この例の場合、正しいインポート ステートメントは次のようになります。
package main import ( "log" "one/entities/bar/basic" ) func main(){ v := basic.Get.Req.Headers{} log.Fatal(v) }
この場合、必要な特定のサブパッケージ (つまり、基本) がインポートされます。このアプローチにより、未使用のサブパッケージへの潜在的な依存関係が回避され、コードが整理された状態に保たれます。
以上がワイルドカード表記を使用して、Go のディレクトリ内のすべてのサブパッケージをインポートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。