A Go fornece REPL?

200

O ambiente interativo é MUITO útil para um programador. No entanto, parece que o Go não fornece isso. Meu entendimento está correto?

z_axis
fonte

Respostas:

164

Não, o Go não fornece um REPL.

No entanto, como já mencionado, o Go Playground (esse é o novo URL) é muito útil. Os autores do Go também estão pensando em adicionar um editor rico em recursos a ele.

Se você quiser algo local, considere instalar o hsandbox . Se executá-lo com simplicidade, hsandbox govocê dividirá a tela do terminal (com screen), onde você poderá escrever o código na parte superior e ver a sua execução na parte inferior a cada salvamento.

Havia um gotrycomando Go padrão, usado para avaliar expressões (com um nome de pacote opcional), e poderia ser executado como gotry 1+2e gotry fmt 'Println("hello")'no shell. Ele não está mais disponível porque poucas pessoas realmente o usaram.

Também vi projetos de terceiros para a construção de um REPL for Go, mas agora só consigo encontrar links para dois deles: igo e go-repl . Quão bem eles funcionam, eu não sei.

Meus dois centavos: A velocidade de compilação torna possível escrever um REPL para o Go, pois também ajudou a criar as ferramentas mencionadas aqui, mas a mesma velocidade torna o REPL menos necessário. Toda vez que quero testar algo no Go que não consigo executar no Playground, abro um .goarquivo simples, inicio a codificação e simplesmente executo o código. Isso será ainda mais fácil quando ogo comando no Go 1 tornar possível o processo de criação de um comando e muito mais fácil.

ATUALIZAÇÃO: A última versão semanal do gocomando Go added, que pode ser usada para criar um arquivo com muita facilidade: escreva seu prog.goarquivo e executego build prog.go && ./prog

ATUALIZAÇÃO 2 : Com o Go 1, você pode executar diretamente os programas go comgo run filename.go

ATUALIZAÇÃO 3 : goreé um novo projeto que parece interessante.

Mostafa
fonte
TL; DR igo Outros: Gore não é muito conveniente, pois requer colagem e Ctrl-D. Algo como Reinteract for Go seria um grande alívio.
4
Parece haver dois projetos REPL chamados "gore". Este é mais ativamente mantido do que a da resposta: github.com/motemen/gore
Bijan
1
Ha, eu estava prestes a postar a mesma coisa. Acabei de brincar motemen/gorelá - é muito bom.
Darragh Enright
O github.com/motemen/gore gore é muito bom e simples de usar.
Junv
56

Tente motemen / gore

Mais um Go REPL que funciona bem. Apresentado com edição de linha, conclusão de código e muito mais.

https://github.com/motemen/gore

insira a descrição da imagem aqui

Bijan
fonte
8

Você também tem um projeto recente (março de 2013) chamado gore de Sriram Srinivasan , que pode ser útil:

gore é um avaliador de linha de comando para código golang - um REPL sem loop, se desejar.
É um substituto para o playground, ao mesmo tempo em que facilita muito a experimentação interativa de códigos: o gore fornece automaticamente o código da placa da caldeira, como declarações de importação e pacote e um invólucro de função principal .
Além disso, como ele é executado no seu próprio computador, nenhum código é rejeitado por motivos de segurança (ao contrário do modo sandbox seguro do playground).

VonC
fonte
7

Você já experimentou o Go Playground ?

Sobre o Playground Go

O Go Playground é um serviço da web que roda nos servidores da golang.org. O serviço recebe um programa Go, compila, vincula e executa o programa dentro de uma sandbox e, em seguida, retorna a saída.

peterSO
fonte
4

Se você é um usuário do Vim, o plug-in vim-go ( https://github.com/fatih/vim-go ) fornece um comando (GoRun) para executar e imprimir a saída do buffer atual. Você ainda precisa incluir todo o código padrão de um arquivo Go principal, mas ainda fornece uma maneira conveniente de testar rapidamente trechos de código em seu ambiente local.

insira a descrição da imagem aqui

HTH

Patrick Canfield
fonte
como pode fazer a saída do GoRun no buffer。my vim atual, exibir isso no shell
vagabundo
vim-vá até o fim! No entanto, para dar um passo adiante, eu removeria o código da placa da caldeira, coloque meu 'package_test.go' no buffer dividido e continue martelando: GoTest &: GoCoverage. Meus 2 centavos ...
rolandvarga
3

O projeto GoSpeccy inclui um REPL interno de um subconjunto restrito do idioma Go. A implementação está usando goeval .


fonte
2

Não, mas você pode explorar a velocidade da compilação (conforme mencionado em outras respostas).

Dê uma olhada no rango que usa um loop de geração, compilação e execução para imitar um REPL. Você também pode iniciá-lo com importações e instruções para iniciar uma sessão interativa.

emicklei
fonte
2

Tive alguma sorte com o depurador VSCode, mas é bastante limitado, na medida em que você não pode invocar chamadas de função do console de depuração Debug: Function Function not supported # 2225 .

Basicamente, você define um ponto de interrupção após configurar corretamente seu launch.jsonarquivo. Em seguida, você pode fazer uma busca detalhada à esquerda na barra lateral de variáveis ​​e inserir expressões de variáveis ​​no console de depuração. Depurando o arquivo go no VSCode para introspectar através do depurador

jxramos
fonte
0

Você também pode tentar https://github.com/haya14busa/goplay Isso permite executar arquivos de código go do seu terminal diretamente para o Go Playground

Montaro
fonte
0

O código Go pode ser executado de maneira semelhante a REPL no Visual Studio Code com as extensões Go e Code Runner. Clique no triângulo Executar ▶ que é marcado pelo cursor do mouse na captura de tela abaixo para executar o código e mostrar os resultados no painel Saída na parte inferior do Código do Visual Studio.

Ao programar com o Go Visual Studio Code, sugerimos extensões Go adicionais que podem ser instaladas para estender a funcionalidade do Visual Studio Code.

Vá em execução no Código do Visual Studio

karel
fonte