Heim > Backend-Entwicklung > Golang > Warum schlägt der „lokale Import' beim Importieren eines nicht lokalen Go-Pakets fehl?

Warum schlägt der „lokale Import' beim Importieren eines nicht lokalen Go-Pakets fehl?

DDD
Freigeben: 2024-12-15 10:35:10
Original
585 Leute haben es durchsucht

Why Does

Lokaler Import in nicht-lokales Paket: Den Fehler verstehen

In Go wird ein lokaler Import verwendet, um ein Paket aus demselben Verzeichnis oder einem Unterverzeichnis des zu importieren aktuelles Arbeitsverzeichnis. Diese Technik kann jedoch nicht angewendet werden, wenn ein nicht-lokales Paket importiert wird, was durch den Fehler „lokaler Import „./greeting“ in einem nicht-lokalen Paket“ angezeigt wird.

Fehlerursache

Um den Fehler zu verstehen, untersuchen wir die bereitgestellte Dateistruktur:

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

Das Problem tritt auf, wenn versucht wird, go install jacob.uk.com auszuführen aus dem src-Verzeichnis. Dieser Befehl versucht, das Paket jacob.uk.com zu installieren, das den ./greeting-Import in helloworld.go enthält. Go interpretiert dies jedoch als lokalen Import, da er aus dem src-Verzeichnis ausgeführt wird, während sich das Paket selbst nicht in src befindet.

Lösung

Um den Fehler zu beheben, stehen zwei Optionen zur Verfügung :

  1. Arbeitsverzeichnis ändern: Navigieren Sie zum Verzeichnis src/jacob.uk.com und führen Sie es aus Gehen Sie zur Installation, ohne das Paket anzugeben. Dadurch kann Go den Import korrekt als lokalen Import auflösen.
  2. Absoluten Importpfad verwenden: Ersetzen Sie den lokalen Import durch einen absoluten Importpfad:
import "jacob.uk.com/greeting"
Nach dem Login kopieren

Dieser Ansatz ermöglicht den Import und die Verwendung des Pakets unabhängig vom Arbeitsverzeichnis.

Vorteile von Absolute Importe

Absolute Importe bieten mehrere Vorteile gegenüber lokalen Importen:

  • Klarheit: Sie geben explizit den Speicherort des importierten Pakets an, was das Verständnis und die Wartung erleichtert.
  • Portabilität: Absolute Importe ermöglichen das Kompilieren und Ausführen von Code von jedem Ort aus, ohne dass dies erforderlich ist um Importpfade zu ändern.
  • Go-Modulkompatibilität: Die moderne Go-Entwicklung basiert auf Go-Modulen, die standardmäßig absolute Importpfade verwenden.

Das obige ist der detaillierte Inhalt vonWarum schlägt der „lokale Import' beim Importieren eines nicht lokalen Go-Pakets fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage