golang がパッケージをインポートできない問題の解決策:
パッケージのインポート:
Standardパッケージの使用は、「fmt」、「net/http」などの指定された短いパスです。
独自のパッケージの場合は、作業ディレクトリ (GOPATH) の下のディレクトリを指定する必要があります。インポート パッケージは実際に基づいています。フォルダー ディレクトリ
パッケージをインポートする複数の方法:
$GOPATH/src## から直接インポート# ディレクトリ
import "test/lib"(実際のパスは
$GOPATH/src/test/lib です)
import alias_name "test/lib" 、この方法で使用する場合、エイリアス
import。 "test/lib", function これを使用する場合は、単にパッケージ名
sql.Register(name) を呼び出します。 init 関数.string, driver driver.Driver)自分で登録すると、外部から使用できるようになります。
import "./model"//モデルディレクトリは現在のファイルと同じディレクトリにありますが、このインポート方法は推奨されません
パッケージのインポート プロセスの説明:
プログラムの初期化と実行は、メイン パッケージから開始されます。メイン パッケージが他のパッケージもインポートする場合、それらはコンパイル中に順番にインポートされます。場合によっては、パッケージが複数のパッケージによって同時にインポートされるため、インポートされるのは 1 回だけになります (たとえば、多くのパッケージで fmt パッケージが使用される可能性がありますが、複数回インポートする必要がないため、インポートされるのは 1 回だけになります)回)。 パッケージをインポートするときに、そのパッケージが他のパッケージもインポートする場合は、他のパッケージが最初にインポートされ、次にこれらのパッケージ内のパッケージレベルの定数と変数が初期化されてから、init が実行されます。 . 関数 (存在する場合) など。インポートされたパッケージがすべてロードされた後、メイン パッケージ内のパッケージ レベルの定数と変数が初期化され、次にメイン パッケージ内の init 関数が実行され (存在する場合)、最後に main 関数が実行されます。次の図は、実行プロセス全体を詳細に説明しています。 注: Go パッケージをインポートするには、用途に応じていくつかの方法があります。コードは作業ディレクトリに均一に保存されます。作業ディレクトリには多数のパッケージが存在します。さまざまなパッケージはディレクトリごとに編成され、パッケージは複数のコード ファイルで構成されます。パッケージをインポートするときは、パッケージの一意のパスに従ってインポートします。インポートされたパッケージはデフォルトで使用する必要があります。使用しない場合、コンパイルは失敗するため、不要なコードの導入を減らすために削除する必要があります。もちろん、 、他の使用シナリオもあります。デフォルトでは、わかりやすいようにファイル名をパッケージ名として使用します。理解を容易にするために、さまざまなパッケージでさまざまな機能の実装が整理されています。コンパイル時にパッケージのソース コードまたは .a を使用しましたか?
メイン以外のパッケージは、コンパイル後に.a ファイルを生成します (
$GOROOT または # を使用してインストールされない限り、一時ディレクトリに生成されます) go install ##$GOPATH
, そうしないと表示されません。 a) 後続の実行可能プログラムのリンクに使用されます。たとえば、Go 標準ライブラリのパッケージに対応するソース コード パスは $GOROOT/src
で、標準ライブラリのパッケージのコンパイルされた .a ファイルへのパスは $ です。 GOROOT/pkg/darwin_amd64
ダウン。奇妙な疑問が頭に浮かびました。コンパイル時に、コンパイラーは .a またはソース コードを使用しますか?
ファイルへのリンクです。
import m "lib/math" m は、lib/math パス内の唯一のパッケージを指します。コンパイラがこのパス内に 2 つのパッケージを見つけた場合、それは許可されません。コンパイル エラーのレポート
推奨チュートリアル: 「go 言語チュートリアル 」
以上がgolang がパッケージをインポートできない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。