Golang でワイルドカード インポートを使用してディレクトリ内のすべてのサブパッケージをインポートできますか?

Susan Sarandon
リリース: 2024-11-19 12:50:02
オリジナル
219 人が閲覧しました

Can you import all subpackages in a directory with a wildcard import in Golang?

Golang でのサブパッケージのインポート: ワイルドカード インポートは可能ですか?

Golang では、パッケージをインポートするとき、開発者は通常、インポート "package_path" 構文を使用して、そのパッケージを指定して特定のパッケージをインポートします。フルパス。ただし、開発者が特定のディレクトリ内のすべてのサブパッケージをインポートする必要があるシナリオもあります。

問題: サブパッケージを含むプロジェクトのコンパイル

次のディレクトリ構造を考慮してください:

main.go
entities/
     bar/
         foo.go
         baz.go
ログイン後にコピー

main.go には次のコードがあるかもしれません:

package main

import "entities/bar"

func main() {
    _ = bar.Get.Basic.Req.Headers{} // Assuming `bar` contains the nested structure
}
ログイン後にコピー

When go install main を使用してこのプロジェクトをコンパイルすると、bar ディレクトリに Go ファイルがないことを示すエラーが発生します。これは、Go がディレクトリ内のすべてのサブパッケージをインポートできるワイルドカード インポートをサポートしていないためです。

Golang インポート構文について

Golang インポート構文では、パッケージ名またはパッケージ名を指定する必要があります。インポートするパッケージのパス。これが必要なのは、インポートされたパッケージの識別子 (パッケージ名) がエクスポートされた識別子にアクセスするために使用されるためです。たとえば、上記の例では、 bar はネストされた Get.Basic.Req.Headers 構造にアクセスするために使用されるパッケージ名です。

代替ソリューション

Go にはワイルドカード インポートの直接サポートがないため、同様の機能を実現するには、代替ソリューションが必要です:

  • 個別にインストールサブパッケージ: go install を使用して各サブパッケージを個別にインストールし、必要なサブパッケージがすべてインストールされていることを確認します。
  • ベンダーの使用: Go Modules や Go Vendoring などのパッケージ マネージャーを利用して依存関係を管理します。サブパッケージを含む、プライベート プロジェクト内。
  • ラッパーの作成パッケージ: 必要なサブパッケージを再エクスポートするラッパー パッケージを作成します。これにより、サブパッケージを直接インポートせずに必要な機能を効果的にインポートできるようになります。

以上がGolang でワイルドカード インポートを使用してディレクトリ内のすべてのサブパッケージをインポートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート