Introduction : « Où est ma console ? »
\n\nAvez-vous déjà pensé : « Si seulement je pouvais exécuter rapidement une ligne de code, tester une hypothèse, expérimenter avec la syntaxe — et continuer à écrire » ? Si vous venez à Go depuis Python, JavaScript ou Ruby, cette question se pose particulièrement. Là-bas, il y a un REPL (Read-Eval-Print Loop) — un environnement interactif où le code s'exécute ligne par ligne. Vous écrivez 2 + 2 — et vous voyez immédiatement 4. Magnifique !
Mais vous ouvrez Go, vous écrivez go run main.go, vous compilez... et vous réalisez : il n'y a pas de magie. Ou peut-être que si ? La question « Does Go provide a REPL? » sur Stack Overflow a recueilli des milliers de vues et des dizaines de commentaires. Les gens sont confus, déçus, et parfois abandonnent même le langage.
Dans cet article, je vais expliquer pourquoi Go n'a pas de REPL intégré, quels outils peuvent le remplacer, et — surtout — comment éviter les erreurs typiques qui transforment l'apprentissage de Go en casse-tête. C'est parti !
\n\nPourquoi Go n'a-t-il pas de REPL ? (Et ce n'est pas un bug, mais une fonctionnalité)
\n\nLa première erreur du débutant est de considérer l'absence de REPL comme un défaut du langage. En réalité, c'est une décision architecturale. Go est un langage compilé et fortement typé. Le REPL suppose une interprétation ou une compilation JIT, ce qui contredit la philosophie de Go : « simplicité, rapidité, prévisibilité ».
\n\nLorsque vous écrivez dans un REPL en Python, l'interpréteur exécute le code ligne par ligne. En Go, chaque programme est d'abord analysé, compilé en code machine, puis exécuté. Cela offre :
\n- \n
- Une vitesse d'exécution fulgurante (pas de surprises en production) ; \n
- Une vérification stricte des types à la compilation (moins d'erreurs à l'exécution) ; \n
- Moins de magie (vous savez exactement ce que fait votre code). \n
Mais qu'en est-il des expériences rapides ? Devez-vous vraiment créer un fichier main.go à chaque fois ? Spoiler : non.
Top 3 des erreurs en travaillant sans REPL (et comment les éviter)
\n\nErreur n°1 : « Je vais tout écrire dans un seul fichier et l'exécuter avec go run »
\n\nC'est l'idée fausse la plus courante. Les débutants créent un fichier main.go géant, y mettent tout le code, le testent avec go run, puis sont surpris que le compilateur se plaigne de variables ou d'imports inutilisés.
Comment l'éviter : Utilisez Go Playground (play.golang.org). C'est un outil web officiel qui fonctionne comme un mini-REPL. Vous écrivez du code, cliquez sur « Run » — et vous voyez le résultat. Oui, ce n'est pas une saisie ligne par ligne, mais pour vérifier la syntaxe, les algorithmes ou de petits morceaux de code, c'est idéal.
\n\nExemple :
\npackage main\n\nimport "fmt"\n\nfunc main() {\n message := "Hello, Go REPL!"\n fmt.Println(message)\n}\nVous exécutez — vous obtenez la sortie. Rapide, propre, sans fichiers inutiles.
\n\nErreur n°2 : « Le REPL en Go, c'est juste go run sans sauvegarde »
\n\nCertains essaient d'utiliser go run comme un REPL : ils écrivent du code directement dans le terminal via echo ou cat. Cela fonctionne uniquement pour des exemples triviaux, mais dès que des imports, des paquets ou des erreurs de compilation apparaissent, tout se casse.
Comment l'éviter : Installez gore — c'est un REPL presque complet pour Go. Il permet d'exécuter des expressions, de déclarer des variables et même d'importer des paquets en mode interactif.
\n\nInstallation :
\ngo install github.com/motemen/gore@latest\nLancement :
\ngore\nExemple de fonctionnement :
\ngore> 2 + 2\n4\ngore> import "fmt"\ngore> fmt.Println("Hello from gore!")\nHello from gore!\nPas parfait, mais très proche d'un REPL classique. L'essentiel est de ne pas oublier qu'il s'agit d'un outil tiers et qu'il ne prend pas en charge toutes les fonctionnalités du langage (par exemple, les goroutines en mode interactif peuvent se comporter de manière inattendue).
\n\n