ホームページ >バックエンド開発 >Golang >ローカル以外の Go パッケージをインポートすると「ローカル インポート」が失敗するのはなぜですか?

ローカル以外の Go パッケージをインポートすると「ローカル インポート」が失敗するのはなぜですか?

DDD
DDDオリジナル
2024-12-15 10:35:10590ブラウズ

Why Does

非ローカル パッケージのローカル インポート: エラーについて

Go では、ローカル インポートは、同じディレクトリまたはそのサブディレクトリからパッケージをインポートするために使用されます。現在の作業ディレクトリ。ただし、「ローカル以外のパッケージのローカルインポート "./greeting"」というエラーが示すように、この手法はローカル以外のパッケージをインポートする場合には適用できません。

エラーの原因

エラーを理解するために、提供されたファイル構造を調べてみましょう:

/Users/clarkj84/Desktop/LearningGo
└── src
    └── jacob.uk.com
        ├── greeting
        │   └── greeting.go
        └── helloworld.go

go install を実行しようとすると問題が発生します。 src ディレクトリ内から jacob.uk.com にアクセスします。このコマンドは、helloworld.go の ./greeting インポートを含む jacob.uk.com パッケージのインストールを試みます。ただし、Go はこれを src ディレクトリから実行されるため、ローカル インポートとして解釈しますが、パッケージ自体は src 内にありません。

解決策

エラーを解決するには、2 つのオプションが利用可能です。 :

  1. 作業ディレクトリの変更: に移動します。 src/jacob.uk.com ディレクトリに移動し、パッケージを指定せずに go install を実行します。これにより、Go はインポートをローカル インポートとして正しく解決できるようになります。
  2. 絶対インポート パスを使用する: ローカル インポートを絶対インポート パスに置き換えます:
import "jacob.uk.com/greeting"

このアプローチにより、作業ディレクトリに関係なくパッケージをインポートして使用できます。

Absolute の利点インポート

絶対インポートには、ローカル インポートに比べていくつかの利点があります。

  • 明確さ: インポートされたパッケージの場所を明示的に指定するため、理解と保守が容易になります。
  • 移植性: 絶対インポートにより、コードを任意の場所からコンパイルして実行できます。
  • Go モジュールの互換性: 最新の Go 開発は、デフォルトで絶対インポート パスを利用する Go モジュールに依存しています。

以上がローカル以外の Go パッケージをインポートすると「ローカル インポート」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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