Skip to Content
BlogBonnes pratiques Goenv

Voici un résumé des bonnes pratiques d’utilisation de goenv (approche recommandée la plus récente pour 2025), pour éviter les pièges courants et améliorer l’efficacité de développement ainsi que la cohérence d’équipe.

1. Installation et configuration de base (méthode recommandée)

brew install goenv // Si la dernière version de golang n'est pas trouvée, mettre à niveau brew upgrade goenv
# Recommandé : installer via git (prend en charge la mise à jour automatique) git clone https://github.com/go-nv/goenv.git ~/.goenv # Ajouter au shell (zsh ou bash) echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(goenv init -)"' >> ~/.zshrc source ~/.zshrc

N’installez pas goenv via Homebrew (macOS) : la version brew se met à jour très lentement et ne prend pas en charge de nombreuses nouvelles versions de Go.

2. Bonnes pratiques essentielles

ScénarioApproche recommandéeExemple de commande
Version Go figée au niveau projetPlacer un fichier .go-version à la racine de chaque projet (goenv le lit en premier)goenv local 1.23.4
Version unifiée pour l’équipeCommiter .go-version dans git, l’équipe s’aligne automatiquementecho “1.23.4” > .go-version && git add .go-version
Version globale par défautNe définir qu’une version de repli, utilisée sans version spécifiquegoenv global 1.23.4
Changement temporaire de versionIsolation par le shell, sans affecter le projetGOENV_VERSION=1.22.8 go run main.go ou goenv shell 1.22.8
Vérifier la version actuelleUtiliser la commande goenv plutôt que go version (cette dernière peut lire le Go système)goenv version ou go version-name

3. Stratégie de gestion de versions recommandée (important !)

# 1. Spécification forcée au niveau projet (fortement recommandé, pour tous les projets) cd myproject goenv local 1.23.4 # Génère automatiquement .go-version # 2. Global : une seule version stable courante (optionnel) goenv global 1.23.4 # 3. Ne jamais s'appuyer sur le Go installé par le système (les versions macOS/Linux distro sont très anciennes)

4. Bonnes pratiques d’intégration avec d’autres outils

OutilConfiguration recommandée
direnvFortement recommandé ! Charge automatiquement layout go ou use goenv dans .envrc
asdfDéconseillé de gérer Go avec asdf en même temps : conflits faciles, utilisez uniquement goenv
dockerUtiliser l’image officielle golang dans le Dockerfile, ne pas dépendre du goenv de l’hôte
vscodeAprès installation du plugin Go, reconnaissance automatique de .go-version, pas de config supplémentaire

Exemple direnv (combinaison puissante) :

# .envrc use goenv layout go # Crée automatiquement gopath bin pour isoler le projet

5. Pièges courants et solutions

ProblèmeSolution
go: command not foundVérifier que eval "$(goenv init -)" a été exécuté, rouvrir le terminal ou sourcer
Nouveau Go installé mais go version affiche encore l’ancienLe Go système est peut-être plus tôt dans PATH ; placez goenv init - en tête de PATH
go mod download lentConfigurer GOPROXY (sans lien avec goenv, mais souvent utilisé ensemble)
go env -w GOPROXY=https://goproxy.cn,direct
Changer de version entre plusieurs projets est pénibledirenv + .go-version pour un basculement automatique

6. Extrait de configuration ~/.zshrc complète recommandée (édition 2025)

export GOENV_ROOT="$HOME/.goenv" export PATH="$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)" export PATH="$GOROOT/bin:$PATH" export PATH="$PATH:$GOPATH/bin" # Accélération Chine (fortement recommandé) export GOPROXY=https://goproxy.cn,direct export GOSUMDB=sum.golang.google.cn

Gestion des exceptions

// Certains éditeurs peuvent mettre en cache la variable d'environnement GOPATH ; quitter et recharger vscode quit

Travail avec vscode

image.png

Mettre à jour les outils d’analyse du plugin Go de vscode, tout sélectionner et réinstaller

image.png

Vider le cache

Go a plusieurs répertoires de cache

go clean cache

Résumé : règles d’or (à mémoriser)

  1. Chaque racine de projet doit avoir un .go-version (commiter dans git)
  2. La version globale n’est qu’un repli unique
  3. Utiliser direnv pour le basculement automatique (efficacité doublée)
  4. Ne jamais s’appuyer sur le Go installé par le système
  5. Utiliser goenv local plutôt que goenv shell pour fixer la version du projet

En suivant ce qui précède, vous éviterez pratiquement tous les pièges de gestion de versions Go, et la collaboration d’équipe sera très fluide. Bonne utilisation.

Dernière mise à jour