ホームページ  >  記事  >  バックエンド開発  >  ワイルドカード表記を使用して、Go のディレクトリ内のすべてのサブパッケージをインポートできますか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 08:11:03464ブラウズ

Can I import all subpackages within a directory in Go using a wildcard notation?

各ディレクトリを明示的にインポートせずに 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。