Introducción: «¿Y dónde está mi consola?»
\n\n¿Alguna vez se ha sorprendido pensando: «Ahora mismo ejecutar rápidamente una línea de código, probar una hipótesis, experimentar con la sintaxis y luego seguir escribiendo»? Si viene a Go desde Python, JavaScript o Ruby, esta pregunta es especialmente relevante. Allí existe REPL (Read-Eval-Print Loop), un entorno interactivo donde el código se ejecuta línea por línea. Escribe 2 + 2 e inmediatamente ve 4. ¡Qué maravilla!
Pero abre Go, escribe go run main.go, compila... y se da cuenta: no hay magia. ¿O sí? La pregunta «Does Go provide a REPL?» en Stack Overflow ha acumulado miles de visitas y decenas de comentarios. La gente se confunde, se decepciona y, a veces, incluso abandona el lenguaje.
En este artículo, le contaré por qué Go no tiene un REPL incorporado, qué herramientas pueden reemplazarlo y, lo más importante, cómo evitar los errores típicos que convierten el aprendizaje de Go en un dolor de cabeza. ¡Allá vamos!
\n\n¿Por qué Go no tiene REPL? (Y no es un error, es una característica)
\n\nEl primer error de un principiante es considerar la ausencia de REPL como una deficiencia del lenguaje. En realidad, es una decisión arquitectónica. Go es un lenguaje compilado y fuertemente tipado. REPL implica interpretación o compilación JIT, lo que contradice la filosofía de Go: «simplicidad, velocidad, previsibilidad».
\n\nCuando escribe en REPL en Python, el intérprete ejecuta el código línea por línea. En Go, cada programa primero se analiza, se compila en código máquina y luego se ejecuta. Esto proporciona:
\n- \n
- Velocidad de ejecución ultrarrápida (sin sorpresas en producción); \n
- Verificación estricta de tipos en tiempo de compilación (menos errores en tiempo de ejecución); \n
- Menos magia (sabe exactamente lo que hace su código). \n
Pero, ¿qué pasa con los experimentos rápidos? ¿Tendrá que crear un archivo main.go cada vez? Spoiler: no.
Top 3 errores al trabajar sin REPL (y cómo evitarlos)
\n\nError n.º 1: «Escribiré todo en un solo archivo y lo ejecutaré con go run»
\n\nEste es el error más común. Los principiantes crean un archivo main.go gigante, meten todo el código allí, lo prueban con go run y luego se sorprenden de que el compilador se queje de variables o importaciones no utilizadas.
Cómo evitarlo: Use Go Playground (play.golang.org). Es una herramienta web oficial que funciona como un mini-REPL. Escribe código, presiona «Run» y ve el resultado. Sí, no es entrada línea por línea, pero para verificar sintaxis, algoritmos o fragmentos pequeños de código, es ideal.
\n\nEjemplo:
\npackage main\n\nimport "fmt"\n\nfunc main() {\n message := "Hello, Go REPL!"\n fmt.Println(message)\n}\nLo ejecutó y obtuvo la salida. Rápido, limpio, sin archivos adicionales.
\n\nError n.º 2: «El REPL en Go es simplemente go run sin guardar»
\n\nAlgunos intentan usar go run como REPL: escriben código directamente en la terminal con echo o cat. Esto funciona solo para ejemplos triviales, pero tan pronto como aparecen importaciones, paquetes o errores de compilación, todo se rompe.
Cómo evitarlo: Instale gore — es un REPL casi completo para Go. Permite ejecutar expresiones, declarar variables e incluso importar paquetes en modo interactivo.
\n\nInstalación:
\ngo install github.com/motemen/gore@latest\nEjecución:
\ngore\nEjemplo de uso:
\ngore> 2 + 2\n4\ngore> import "fmt"\ngore> fmt.Println("Hello from gore!")\nHello from gore!\nNo es perfecto, pero está muy cerca de un REPL clásico. Lo principal es no olvidar que es una herramienta de terceros y no admite todas las características del lenguaje (por ejemplo, las gorutinas en modo interactivo pueden comportarse de manera inesperada).
\n\n