GOPATH et GOROOT : valeurs correctes et erreurs courantes
\n\nSi vous débutez avec Go, vous rencontrerez forcément les abréviations mystérieuses GOPATH et GOROOT. La question « What should be the values of GOPATH and GOROOT? » est l'une des plus posées sur Stack Overflow, et pour cause. Les débutants s'y perdent, les configurent mal et obtiennent des erreurs étranges lors de la compilation de leurs projets.
Dans cet article, on vous explique simplement à quoi servent ces variables, quelles valeurs leur attribuer par défaut, et comment passer à l'approche moderne avec go modules. C'est parti !
Qu'est-ce que GOROOT ?
\n\nGOROOT est le chemin vers le dossier où le compilateur Go est installé. Ce dossier contient les paquets standards (fmt, net, os, etc.), ainsi que les binaires go, gofmt et d'autres utilitaires.
La plupart des développeurs n'ont pas besoin de définir GOROOT explicitement. Si vous avez installé Go via l'installateur officiel ou un gestionnaire de paquets, le compilateur connaît déjà son emplacement.
\n\nComment vérifier la valeur actuelle de GOROOT ?
\nOuvrez un terminal et exécutez :
\ngo env GOROOT\n\nExemple de sortie sous Linux :
\n/usr/local/go\n\nSous Windows (si l'installation est par défaut) :
\nC:\\Program Files\\Go\n\nQuand faut-il modifier GOROOT ?
\n- \n
- Si vous avez déplacé le dossier Go vers un autre emplacement. \n
- Si vous avez plusieurs versions de Go installées et souhaitez basculer entre elles. \n
- Si vous compilez Go à partir des sources et l'avez installé dans un répertoire non standard. \n
Dans tous les autres cas, laissez GOROOT tranquille — laissez Go s'en occuper lui-même.
\n\nQu'est-ce que GOPATH ?
\n\nQuant à GOPATH, c'est une variable bien plus intéressante. Historiquement, Go exigeait que tout votre code se trouve dans un seul espace de travail. Cet espace était défini par GOPATH.
Par défaut, GOPATH pointe vers :
- \n
- Linux/macOS :
$HOME/go\n - Windows :
%USERPROFILE%\\go\n
À l'intérieur de ce dossier, la structure standard est :
\ngo/\n├── bin/ # binaires compilés\n├── pkg/ # fichiers objets compilés et cache\n└── src/ # code source de vos projets\n ├── github.com/\n │ └── user/\n │ └── monprojet/\n └── exemple.com/\n └── monapp/\n\nComment vérifier la valeur actuelle de GOPATH ?
\ngo env GOPATH\n\nQuelles doivent être les valeurs de GOPATH et GOROOT ? (Valeurs correctes)
\n\nVoici la réponse courte à la question principale :
\n\n| Variable | \nValeur par défaut (Linux/macOS) | \nValeur par défaut (Windows) | \n
|---|---|---|
GOROOT | \n /usr/local/go | \n C:\\Program Files\\Go | \n
GOPATH | \n $HOME/go | \n %USERPROFILE%\\go | \n
Important : GOPATH et GOROOT doivent être des dossiers différents. Ne les définissez jamais avec la même valeur !
Erreurs typiques et comment les corriger
\n\nErreur 1 : « GOPATH not set » ou « cannot find package »
\nSi vous utilisez l'ancienne approche (avant les versions 1.11-1.13), Go cherche les paquets dans $GOPATH/src. Si vous avez placé votre projet ailleurs, le compilateur ne le trouvera pas.
Solution :
\n- \n
- Soit déplacez votre projet dans
$GOPATH/src. \n - Soit \n