Maison >développement back-end >Golang >Pourquoi « l'importation locale » échoue-t-elle lors de l'importation d'un package Go non local ?

Pourquoi « l'importation locale » échoue-t-elle lors de l'importation d'un package Go non local ?

DDD
DDDoriginal
2024-12-15 10:35:10590parcourir

Why Does

Import local dans un package non local : comprendre l'erreur

Dans Go, une importation locale est utilisée pour importer un package depuis le même répertoire ou un sous-répertoire du répertoire de travail actuel. Cependant, cette technique ne peut pas être appliquée lors de l'importation d'un package non local, comme en témoigne l'erreur "local import "./greeting" dans un package non local."

Cause de l'erreur

Pour comprendre l'erreur, examinons la structure de fichier fournie :

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

Le problème survient lorsque vous essayez d'exécuter go install jacob.uk.com à partir du répertoire src. Cette commande tente d'installer le package jacob.uk.com, qui inclut l'importation ./greeting dans helloworld.go. Cependant, Go interprète cela comme une importation locale puisqu'il est exécuté depuis le répertoire src, alors que le package lui-même ne se trouve pas dans src.

Solution

Pour résoudre l'erreur, deux options sont disponibles :

  1. Changer le répertoire de travail : Accédez au répertoire src/jacob.uk.com et exécutez go install sans préciser le colis. Cela permet à Go de résoudre correctement l'importation en tant qu'importation locale.
  2. Utiliser le chemin d'importation absolu : Remplacez l'importation locale par un chemin d'importation absolu :
import "jacob.uk.com/greeting"

Cette approche permet d'importer et d'utiliser le package quel que soit le répertoire de travail.

Avantages d'Absolute Importations

Les importations absolues offrent plusieurs avantages par rapport aux importations locales :

  • Clarté :Elles spécifient explicitement l'emplacement du package importé, ce qui le rend plus facile à comprendre et à maintenir.
  • Portabilité : Les importations absolues permettent de compiler et d'exécuter du code depuis n'importe quel emplacement sans avoir à modifier l'importation chemins.
  • Compatibilité des modules Go : Le développement Go moderne s'appuie sur les modules Go, qui utilisent des chemins d'importation absolus par défaut.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn