introduction
Cet article vous expliquera ce qu'est leGOPATH
, comment il fonctionne et comment le configurer. Il s'agit d'une étape cruciale pour la configuration d'un environnement de développement Go, ainsi que pour comprendre comment Go trouve, installe et construit les fichiers source. Dans cet article, nous utiliseronsGOPATH
pour faire référence au concept de structure de dossier dont nous allons parler. Nous utiliserons$GOPATH
pour faire référence à la variable d'environnement que Go utilise pour trouver la structure des dossiers.
UnGo Workspace est la façon dont Go gère nos fichiers source, les binaires compilés et les objets mis en cache utilisés pour une compilation plus rapide plus tard. Il est généralement conseillé, et également conseillé, de n’avoir qu’un seul espace de travail Go, bien qu’il soit possible d’avoir plusieurs espaces. LeGOPATH
agit comme le dossier racine d'un espace de travail.
Définition de la variable d'environnement$GOPATH
La variable d'environnement$GOPATH
répertorie les endroits où Go recherche les espaces de travail Go.
Par défaut, Go suppose que notre emplacementGOPATH
est à$HOME/go
, où$HOME
est le répertoire racine de notre compte utilisateur sur notre ordinateur. Nous pouvons changer cela en définissant la variable d'environnement$GOPATH
. Pour une étude plus approfondie, suivez ce tutoriel sur lesreading and setting environment variables in Linux.
Pour plus d'informations sur la définition de la variable$GOPATH
, reportez-vous au Godocumentation.
De plus, ceseries parcourt l'installation de Go et la configuration d'un environnement de développement Go.
$GOPATH
n'est pas$GOROOT
Le$GOROOT
est l’endroit où vit le code, le compilateur et les outils de Go - c’estnot notre code source. Le$GOROOT
est généralement quelque chose comme/usr/local/go
. Notre$GOPATH
est généralement quelque chose comme$HOME/go
.
Bien que nous n'ayons plus besoin de configurer spécifiquement la variable$GOROOT
, elle est toujours référencée dans les matériaux plus anciens.
Parlons maintenant de la structure de l’espace de travail Go.
Anatomie de l'espace de travail Go
À l'intérieur d'un espace de travail Go, ouGOPATH
, il y a trois répertoires:bin
,pkg
etsrc
. Chacun de ces répertoires a une signification particulière pour la chaîne d’outil Go.
.
├── bin
├── pkg
└── src
└── github.com/foo/bar
└── bar.go
Jetons un coup d’œil à chacun de ces répertoires.
Le répertoire$GOPATH/bin
est l'endroit où Go place les binaires quego install
compile. Notre système d'exploitation utilise la variable d'environnement$PATH
pour rechercher des applications binaires pouvant s'exécuter sans chemin complet. Il est recommandé d'ajouter ce répertoire à notre variable globale$PATH
.
Par exemple, si nous n’ajoutons pas$GOPATH/bin
à$PATH
pour exécuter un programme à partir de là, nous aurions besoin d’exécuter:
$GOPATH/bin/myapp
Lorsque$GOPATH/bin
est ajouté à$PATH
, nous pouvons faire le même appel comme tel:
myapp
Le répertoire$GOPATH/pkg
est l'endroit où Go stocke les fichiers objets précompilés pour accélérer la compilation ultérieure des programmes. Généralement, la plupart des développeurs n’auront pas besoin d’accéder à ce répertoire. Si vous rencontrez des problèmes avec la compilation, vous pouvez supprimer ce répertoire en toute sécurité et Go le reconstruira ensuite.
Le répertoiresrc
est l'endroit où tous nos fichiers.go
, ou code source, doivent être situés. Cela ne doit pas être confondu avec le code source utilisé par les outils Go, qui se trouve au niveau des$GOROOT
. Au fur et à mesure que nous écrivons des applications, des packages et des bibliothèques Go, nous placerons ces fichiers sous$GOPATH/src/path/to/code
.
Que sont les paquets?
Le code Go est organisé en paquets. Un package représente tous les fichiers d'un même répertoire sur le disque. Un répertoire ne peut contenir que certains fichiers du même package. Les packages sont stockés, avec tous les fichiers source Go écrits par l'utilisateur, dans le répertoire$GOPATH/src
. Nous pouvons comprendre la résolution de paquets en important différents paquets.
Si notre code vit à$GOPATH/src/blue/red
alors son nom de package devrait êtrered
.
L'instruction d'importation pour le packagered
serait:
import "blue/red"
Les packages hébergés dans les référentiels de code source, tels que GitHub et BitBucket, ont l'emplacement complet du référentiel dans le chemin d'importation.
Par exemple, nous importerions le code source àhttps://github.com/gobuffalo/buffalo en utilisant le chemin d'importation suivant:
import "github.com/gobuffalo/buffalo"
Par conséquent, ce code source serait à l'emplacement suivant sur le disque:
$GOPATH/src/github.com/gobuffalo/buffalo
Conclusion
Dans cet article, nous avons abordé lesGOPATH
comme un ensemble de dossiers dans lesquels Go s'attend à ce que notre code source vive, ainsi que ce que sont ces dossiers et ce qu'ils contiennent. Nous avons expliqué comment changer cet emplacement de la valeur par défaut de$HOME/go
au choix de l'utilisateur en définissant la variable d'environnement$GOPATH
. Enfin, nous avons discuté de la façon dont Go recherche les packages dans cette structure de dossiers.
Introduit dans Go 1.11, lesGo Modules visent à remplacer les espaces de travail Go et lesGOPATH
. Bien qu'il soit recommandé de commencer à utiliser des modules, certains environnements, tels que les environnements d'entreprise, peuvent ne pas être prêts à utiliser des modules.
LeGOPATH
est l'un des aspects les plus délicats de la configuration de Go, mais une fois qu'il est configuré, nous pouvons généralement l'oublier.