¿Go proporciona REPL?

200

El entorno interactivo es MUY útil para un programador. Sin embargo, parece que Go no lo proporciona. ¿Es correcto mi entendimiento?

eje Z
fuente

Respuestas:

164

No, Go no proporciona una REPL.

Sin embargo, como ya se mencionó, Go Playground (esta es la nueva URL) es muy útil. Los Autores de Go también están pensando en agregarle un editor rico en funciones.

Si quieres algo local, considera instalar hsandbox . Ejecutarlo simplemente con hsandbox godividirá la pantalla de su terminal (con screen) donde puede escribir código en la parte superior y ver su salida de ejecución en la parte inferior en cada guardado.

Había gotryuno de los comandos Go estándar, que se usaba para evaluar expresiones (con un nombre de paquete opcional), y podía ejecutarse como gotry 1+2y gotry fmt 'Println("hello")'desde shell. Ya no está disponible porque en realidad no mucha gente lo usó.

También he visto proyectos de terceros para construir un REPL para Go, pero ahora solo puedo encontrar enlaces a dos de ellos: igo y go-repl . No sé qué tan bien funcionan.

Mis dos centavos: la velocidad de compilación hace posible escribir un REPL para Go, ya que también ha ayudado a construir las herramientas mencionadas aquí, pero la misma velocidad hace que REPL sea menos necesario. Cada vez que quiero probar algo en Go que no puedo ejecutar en Playground, abro un .goarchivo simple y empiezo a codificar y simplemente ejecuto el código. Esto será aún más fácil cuando el gocomando en Go 1 hace que el proceso de compilación de un comando sea posible y mucho más fácil.

ACTUALIZACIÓN: la última versión semanal del gocomando Go agregado que se puede utilizar para crear un archivo muy fácilmente: escriba su prog.goarchivo y ejecutego build prog.go && ./prog

ACTUALIZACIÓN 2 : Con Go 1 puede ejecutar directamente programas go congo run filename.go

ACTUALIZACIÓN 3 : gorees un nuevo proyecto que parece interesante.

Mostafa
fuente
TL; DR igo Otros: Gore no es muy conveniente ya que requiere pegar y Ctrl-D. Algo así como Reinteract for Go sería una salsa increíble.
44
Parece que hay dos proyectos REPL llamados "gore". Este se mantiene más activamente que el de la respuesta: github.com/motemen/gore
Bijan
1
Ja, estaba a punto de publicar lo mismo. Acabo de jugar motemen/goreallí, es bastante bueno.
Darragh Enright
github.com/motemen/gore gore es bastante bueno y fácil de usar.
Junio
8

También tiene un proyecto reciente (marzo de 2013) llamado gore de Sriram Srinivasan , que puede ser útil:

gore es un evaluador de línea de comandos para el código de golang: un REPL sin bucle, por así decirlo.
Es un reemplazo para el patio de recreo, al tiempo que hace que sea mucho más fácil probar interactivamente bits de código: gore proporciona automáticamente código de placa de caldera, como declaraciones de importación y paquete, y un contenedor de funciones principales .
Además, dado que se ejecuta en su propia computadora, no se rechaza ningún código por motivos de seguridad (a diferencia del modo de caja de seguridad segura de go playground).

VonC
fuente
7

¿Has probado el Go Playground ?

Sobre el patio de juegos Go

Go Playground es un servicio web que se ejecuta en los servidores de golang.org. El servicio recibe un programa Go, compila, enlaza y ejecuta el programa dentro de un sandbox, luego devuelve el resultado.

PeterSO
fuente
4

Si es un usuario de Vim, el complemento vim-go ( https://github.com/fatih/vim-go ) proporciona un comando (GoRun) para ejecutar e imprimir la salida del búfer actual. Todavía tiene que incluir todo el código repetitivo de un archivo Go principal, pero aún así proporciona una forma conveniente de probar rápidamente fragmentos de código en su entorno local.

ingrese la descripción de la imagen aquí

HTH

Patrick Canfield
fuente
¿Cómo puede hacer que la salida Gorun en el vim buffer.my actual, para mostrar que en la cáscara
vagabundo
vim-go todo el camino! Sin embargo, para llevar esto un paso más allá, eliminaría el código de la placa de la caldera, pondría mi 'package_test.go' en el búfer dividido y seguiría martillando: GoTest y: GoCoverage. Mis 2 centavos ...
rolandvarga
3

El proyecto GoSpeccy incluye una REPL incorporada de un subconjunto restringido del idioma Go. La implementación está utilizando goeval .


fuente
2

No, pero puede explotar la velocidad de compilación (como se menciona en otras respuestas).

Eche un vistazo a rango que utiliza un bucle generate-compile-run para imitar un REPL. También puede comenzar con importaciones y declaraciones para comenzar una sesión interactiva.

emicklei
fuente
2

He tenido suerte con el depurador VSCode, pero es bastante limitado en la medida en que no puede invocar llamadas de función desde la consola de depuración Depurar: llamadas de función no admitidas # 2225 .

Básicamente, establece un punto de interrupción después de configurar correctamente su launch.jsonarchivo. Luego puede profundizar a la izquierda en la barra lateral de variables e ingresar expresiones variables en la consola de depuración. Depuración del archivo go en VSCode para introspectar a través del depurador

jxramos
fuente
0

El código Go puede ejecutarse de forma REPL en Visual Studio Code con la extensión Go y la extensión Code Runner. Haga clic en el triángulo Ejecutar ▶ que está marcado con el cursor del mouse en la captura de pantalla siguiente para ejecutar el código y mostrar los resultados en el panel Salida en la parte inferior del Código de Visual Studio.

Al programar con Go Visual Studio Code, sugerirá extensiones Go adicionales que se pueden instalar para ampliar la funcionalidad de Visual Studio Code.

Ve corriendo en Visual Studio Code

karel
fuente