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 :
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
.a
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!