Comprendre le GOPATH

Introduction

Cet article vous aidera à comprendre ce qu’est le GOPATH, comment il fonctionne et comment le configurer. C’est une étape cruciale pour la mise en place d’un environnement de développement Go, ainsi que pour comprendre comment Go trouve, installe et construit les fichiers sources. Dans cet article, nous utiliserons GOPATH pour faire référence au concept de la structure de dossiers dont nous allons parler. Nous utiliserons $GOPATH pour faire référence à la variable d’environnement que Go utilise pour trouver la structure de dossiers.

Un espace de travail Go est la façon dont Go gère nos fichiers sources, les binaires compilés et les objets mis en cache utilisés pour une compilation plus rapide plus tard. Il est typique, et également conseillé, de n’avoir qu’un seul espace de travail Go, bien qu’il soit possible d’avoir plusieurs espaces. Le GOPATH agit comme le dossier racine d’un espace de travail.

Définir la variable d’environnement $GOPATH

La variable d’environnement $GOPATH liste les endroits où Go doit chercher les espaces de travail Go.

Par défaut, Go suppose que notre emplacement GOPATH 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 la lecture et le paramétrage des variables d’environnement sous Linux.

Pour plus d’informations sur le paramétrage de la variable $GOPATH, consultez la documentation de Go.

De plus, cette série marche à travers 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 l’outillage de Go – ce n’est pas 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 anciens matériaux.

Maintenant, discutons de la structure de l’espace de travail de Go.

Anatomie de l’espace de travail de Go

À l’intérieur d’un espace de travail de Go, ou GOPATH, il y a trois répertoires : bin, pkg, et src. Chacun de ces répertoires a une signification particulière pour la chaîne d’outils Go.

.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go

Regardons chacun de ces répertoires.

Le répertoire $GOPATH/bin est l’endroit où Go place les binaires que go install compile. Notre système d’exploitation utilise la variable d’environnement $PATH pour trouver les applications binaires qui peuvent 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 devrions 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. Typiquement, la plupart des développeurs n’auront pas besoin d’accéder à ce répertoire. Si vous rencontrez des problèmes de compilation, vous pouvez supprimer ce répertoire en toute sécurité et Go le reconstruira ensuite.

Le répertoire src est l’endroit où tous nos fichiers .go, ou code source, doivent être situés. Il ne faut pas le confondre avec le code source que l’outil Go utilise, qui se trouve dans le $GOROOT. Au fur et à mesure que nous écrivons des applications, des paquets 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 paquet représente tous les fichiers d’un seul répertoire sur le disque. Un répertoire ne peut contenir que certains fichiers du même paquetage. Les paquets sont stockés, avec tous les fichiers sources Go écrits par l’utilisateur, sous le répertoire $GOPATH/src. Nous pouvons comprendre la résolution de paquet en important différents paquets.

Si notre code vit à $GOPATH/src/blue/red, alors son nom de paquet devrait être red.

L’instruction d’importation pour le paquet red serait:

import "blue/red"

Les paquets qui vivent dans des dépôts de code source, comme GitHub et BitBucket, ont l’emplacement complet du dépôt comme partie de leur 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 se trouverait à l’emplacement suivant sur le disque:

$GOPATH/src/github.com/gobuffalo/buffalo

Conclusion

Dans cet article, nous avons discuté du GOPATH 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 discuté de la façon de 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 abordé la façon dont Go recherche les paquets dans cette structure de dossiers.

Introduits dans Go 1.11, les modules Go visent à remplacer les espaces de travail Go et les GOPATH. Bien qu’il soit recommandé de commencer à utiliser les modules, certains environnements, tels que les environnements d’entreprise, peuvent ne pas être prêts à utiliser les modules.

Le GOPATH 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.

Leave a Reply