¿Go proporciona REPL?


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

Author: lospejos, 2011-12-15

10 answers

No, Go no proporciona un 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 agregar un editor rico en funciones.

Si quieres algo local, considera instalar hsandbox. Ejecutarlo simplemente con hsandbox go dividirá 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.

Hubo un gotry entre los comandos estándar Go, que solían evaluar expresiones (con un nombre de paquete opcional), y podían ejecutarse como gotry 1+2 y gotry fmt 'Println("hello")' desde el shell. Ya no está disponible porque no muchas personas realmente lo utilizan.

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. Qué tan bien funcionan no lo sé.

Mis dos centavos: La velocidad de compilación hace que la escritura sea un REPL posible 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 simple archivo .go y empiezo a codificar y simplemente corro el código. Esto será aún más fácil cuando el comando go en Go 1 hace que el proceso de compilación de un solo comando sea posible y mucho más fácil.

ACTUALIZACIÓN: Última versión semanal de Go agregado go comando que se puede utilizar para construir muy fácilmente un archivo: escribe tu archivo prog.go y ejecuta go build prog.go && ./prog

ACTUALIZACIÓN 2 : Con Go 1 puedes ejecutar directamente programas go con go run filename.go

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

 132
Author: Mostafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-01 20:53:34

Prueba motemen / gore

Otro Go REPL que funciona muy bien. Destacado con edición de líneas, finalización de código, y más.

Https://github.com/motemen/gore

introduzca la descripción de la imagen aquí

 35
Author: Bijan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-08 12:58:04

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 a un REPL sin bucle, por así decirlo.
Es un reemplazo para el go playground, mientras que hace que sea mucho más fácil probar interactivamente bits de código: gore suministra automáticamente código de placa de caldera como declaraciones de importación y paquete y una envoltura de función principal.
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 arena segura de go playground).

 8
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-26 13:57:26

¿Has probado el Go Playground?

Acerca del Go Playground

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

 7
Author: peterSO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-18 11:13:43

El proyecto GoSpeccy incluye un REPL incorporado de un subconjunto restringido del lenguaje Go. La implementación está usando goeval .

 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-23 16:58:07

Si eres un usuario de Vim, el plugin 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 todavía proporciona una forma conveniente de probar rápidamente fragmentos de código en su entorno local.

introduzca la descripción de la imagen aquí

HTH

 3
Author: Patrick Canfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-09 15:15:09

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

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

 2
Author: emicklei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-16 14:51:53

Gosh es la cáscara interactiva de Golang. El objetivo es proporcionar un entorno de ejecución interactivo fácil de usar.

Https://github.com/mkouhei/gosh

 1
Author: raittes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-31 02:41:05

También te gustaría probar https://github.com/haya14busa/goplay Esto le permite ejecutar archivos de código go desde su terminal directamente al Go Playground

 0
Author: Montaro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-20 15:48:47

Compruebe también www.gorepl.com para go REPL y otras réplicas

 0
Author: donvk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-10 08:36:58