Maison  >  Article  >  développement back-end  >  Que dois-je faire si Golang ne peut pas importer de packages ?

Que dois-je faire si Golang ne peut pas importer de packages ?

coldplay.xixi
coldplay.xixioriginal
2020-06-24 13:09:595520parcourir

Que dois-je faire si Golang ne peut pas importer de packages ?

Solution au problème selon lequel Golang ne peut pas importer de packages :

Importer des packages :

Utiliser les packages standard sont un chemin court donné, tel que "fmt", "net/http"

votre propre package, vous devez spécifier un répertoire sous le répertoire de travail (GOPATH), importer le package, qui est en fait en fonction du répertoire de travail Il existe de nombreuses façons d'importer des packages dans le répertoire du dossier

 :

  • importer directement $GOPATH/src selon le import "test/lib" répertoire (le chemin est en fait $GOPATH/src/test/lib)

  • Importation d'alias : import alias_name "test/lib" , lorsqu'il est utilisé de cette manière, vous pouvez utiliser directement l'alias

  • Utilisez le point pour importer : import . "test/lib" , la fonction est d'omettre directement le nom du package lors de l'utilisation de

et de l'importer avec un trait de soulignement : import _ "test /lib". Cette opération importe en fait uniquement le package. Lors de l'importation d'un package, tout. La fonction init() sera exécutée, mais parfois vous n'avez pas vraiment besoin d'utiliser ces packages, vous voulez juste sa fonction init() à exécuter. À ce stade, vous pouvez utiliser l'opération _ pour référencer le package. Le package ne peut pas appeler la fonction exportée dans le package via le nom du package, mais appelle simplement sa fonction init ()

Souvent celles-ci. Les fonctions init enregistrent le moteur dans son propre package, afin qu'il puisse être facilement utilisé par le monde extérieur. Par exemple, le package qui implémente la base de données/sql appelle sql.Register(name string, driver driver.Driver) pour s'enregistrer dans la fonction init, puis il peut être utilisé. en externe.

Le chemin relatif importe le modèle dans le même répertoire que le répertoire du fichier actuel, mais il n'est pas recommandé d'importer le package import"./model"//

de cette manière : <.> L'initialisation et l'exécution du programme démarrent à partir du package principal si le package principal est également importé. Si d'autres packages sont importés, ils seront importés en séquence lors de la compilation. Parfois, un package sera importé par plusieurs packages à. en même temps, il ne sera donc importé qu'une seule fois (par exemple, de nombreux packages peuvent utiliser le package fmt, mais il ne sera importé qu'une seule fois, car il n'est pas nécessaire d'importer plusieurs fois)

Quand un package est importé, si le package importe également d'autres packages, les autres packages seront importés en premier, puis le contenu de ces packages sera importé, les constantes et les variables au niveau du package sont initialisées, puis la fonction init (le cas échéant). est exécuté, et ainsi de suite. Lorsque tous les packages importés sont chargés, les constantes et variables au niveau du package dans le package principal seront initialisées, puis exécutez la fonction init dans le package principal (s'il existe), et enfin exécutez le package principal. fonction. La figure suivante explique l'ensemble du processus d'exécution en détail :

Que dois-je faire si Golang ne peut pas importer de packages ?Remarque :

Importer Il existe plusieurs façons d'importer des packages Go, avec différentes utilisations. Le code est stocké uniformément dans le répertoire de travail. Il y aura de nombreux packages dans le répertoire de travail. Différents packages sont organisés par répertoire et les packages sont composés de plusieurs fichiers de code. Lors de l'importation d'un package, importez-le selon le chemin unique du package. Le package importé doit être utilisé par défaut. S'il n'est pas utilisé, la compilation échouera et devra être supprimée pour réduire l'introduction de code inutile. , il existe d'autres scénarios d'utilisation. Par défaut, nous utilisons le nom du fichier comme nom du package pour une compréhension facile. Différents packages organisent différentes implémentations de fonctions pour faciliter la compréhension.

Avez-vous utilisé le code source du package ou .a lors de la compilation ?

Un package non principal générera un fichier

après compilation (généré dans le répertoire temporaire, vous ne pouvez pas le voir à moins d'utiliser go install pour l'installer sous

ou .a .a), utilisé pour la liaison ultérieure de programmes exécutables. Par exemple, le chemin de la partie de code source correspondant au package dans la bibliothèque standard Go est : $GOROOT, et le chemin du fichier .a compilé du package dans la bibliothèque standard est sous $GOPATH. Une question étrange se pose dans ma tête. Lors de la compilation, le compilateur utilise-t-il .a ou le code source ? $GOROOT/src$GOROOT/pkg/darwin_amd64

    Lors de l'utilisation de packages tiers, lorsque le code source et .a sont tous deux installés, le compilateur établit un lien vers le code source. La soi-disant utilisation du code source d'un package tiers est en fait un lien vers le fichier
  • dans le répertoire temporaire compilé avec le dernier code source.

    .a

  • Est-ce la même chose pour les packages de la bibliothèque standard Go ? Pour les bibliothèques standards, telles que fmt, lors de la compilation, devez-vous utiliser le code source sous $GOROOT/src ou le .a compilé sous $GOROOT/pkg ? Cependant, contrairement aux packages personnalisés, même si vous modifiez le code source du package fmt (sans recompiler le package d'installation GO), lorsque le code source utilisateur est compilé, il n'y aura aucune tentative de recompilation du package fmt, et le lien sera toujours être compilé lors de la liaison. fmt.a
En langage Go, le dernier élément du chemin après l'importation est-il le nom du package ou le nom du chemin ?

    Le dernier élément après l'importation doit être le chemin, qui est le répertoire, pas le nom du package. Mais souvent, le nom du chemin est le même que le nom du package
  • import m "lib/math" m fait référence au seul package dans le chemin lib/math. Si le compilateur trouve deux packages dans ce chemin, il n'est pas autorisé à signaler les erreurs de compilation

    .

Tutoriel recommandé : "tutoriel de langue go"

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