Go fornisce REPL?


200

L'ambiente interattivo è MOLTO utile per un programmatore. Tuttavia, sembra che Go non lo fornisca. La mia comprensione è corretta?

Risposte:


164

No, Go non fornisce un REPL.

Tuttavia, come già accennato, Go Playground (questo è il nuovo URL) è molto utile. Gli autori Go stanno anche pensando di aggiungere un editor ricco di funzionalità.

Se vuoi qualcosa di locale, considera l'installazione di hsandbox . Eseguendolo semplicemente con hsandbox godividerete la schermata del terminale (con screen) in cui è possibile scrivere il codice in alto e vedere l'output di esecuzione in fondo ad ogni salvataggio.

Esisteva un gotrycomando Go standard, utilizzato per valutare le espressioni (con un nome di pacchetto opzionale) e che poteva essere eseguito come gotry 1+2e gotry fmt 'Println("hello")'dalla shell. Non è più disponibile perché non molte persone lo hanno effettivamente utilizzato.

Ho anche visto progetti di terze parti per la costruzione di un REPL for Go, ma ora posso trovare solo collegamenti a due di essi: igo e go-repl . Quanto bene funzionano non lo so.

I miei due centesimi: la velocità di compilazione rende possibile scrivere un REPL per Go, poiché ha anche aiutato a costruire gli strumenti menzionati qui, ma la stessa velocità rende il REPL meno necessario. Ogni volta che voglio testare qualcosa su Go che non posso eseguire in Playground, apro un .gofile semplice e inizio la codifica ed eseguo semplicemente il codice. Ciò sarà ancora più semplice quando il gocomando in Go 1 rende possibile il processo di compilazione con un solo comando e molto più semplice.

AGGIORNAMENTO: ultima versione settimanale del gocomando aggiunto Go che può essere utilizzata per creare facilmente un file: scrivere il prog.gofile ed eseguirlogo build prog.go && ./prog

AGGIORNAMENTO 2 : Con Go 1 puoi eseguire direttamente i programmi go congo run filename.go

AGGIORNAMENTO 3 : goreè un nuovo progetto che sembra interessante.


TL; DR igo Altri: Gore non è molto conveniente in quanto richiede incollaggio e Ctrl-D. Qualcosa come Reinteract for Go sarebbe stupendo.

4
Sembra che ci siano due progetti REPL chiamati "gore". Questo è mantenuto più attivamente di quello nella risposta: github.com/motemen/gore
Bijan

1
Ah, stavo per pubblicare la stessa cosa. Ci ho appena giocato motemen/gore- è abbastanza buono.
Darragh Enright,

github.com/motemen/gore gore è abbastanza buono e semplice da usare.
Junv


8

Hai anche un recente progetto (marzo 2013) chiamato gore di Sriram Srinivasan , che può essere utile:

gore è un valutatore da riga di comando per il codice golang - un REPL senza loop, se vuoi.
È un sostituto per il parco giochi go, mentre rende molto più semplice provare interattivamente bit di codice: gore fornisce automaticamente il codice della piastra della caldaia come dichiarazioni di importazione e di pacchetto e un wrapper di funzione principale .
Inoltre, poiché funziona sul tuo computer, nessun codice viene rifiutato per motivi di sicurezza (a differenza della modalità sandbox sicura del parco giochi).


7

Hai provato Go Playground ?

Informazioni sul parco giochi Go

Go Playground è un servizio Web che viene eseguito sui server di golang.org. Il servizio riceve un programma Go, compila, collega ed esegue il programma all'interno di una sandbox, quindi restituisce l'output.


4

Se sei un utente Vim, il plug-in vim-go ( https://github.com/fatih/vim-go ) fornisce un comando (GoRun) per eseguire e stampare l'output del buffer corrente. Devi ancora includere tutto il codice boilerplate di un file Go principale, ma fornisce comunque un modo conveniente per testare rapidamente frammenti di codice nel tuo ambiente locale.

inserisci qui la descrizione dell'immagine

HTH


come può rendere l'output di GoRun nel buffer corrente currentmy vim, visualizzarlo nella shell
vagabond

vim-go fino in fondo! Tuttavia, per fare un ulteriore passo in avanti, rimuoverei il codice della piastra della caldaia, inserendo il mio 'package_test.go' nel buffer diviso e continuando a martellare: GoTest &: GoCoverage. I miei 2 centesimi ...
rolandvarga,

3

Il progetto GoSpeccy include un REPL integrato di un sottoinsieme limitato della lingua Go. L'implementazione utilizza goeval .


2

No, ma puoi sfruttare la velocità della compilazione (come indicato in altre risposte).

Dai un'occhiata a rango che utilizza un ciclo di generazione-compilazione per simulare un REPL. Puoi anche avviarlo con importazioni e dichiarazioni per iniziare una sessione interattiva.


2

Ho avuto un po 'di fortuna con il debugger VSCode, ma è abbastanza limitato in quanto non è possibile richiamare le chiamate di funzione dalla console di debug Debug: Chiamate di funzione non supportate # 2225 .

Fondamentalmente si imposta un punto di interruzione dopo aver configurato correttamente il launch.jsonfile. Quindi è possibile eseguire il drill down sulla sinistra nella barra laterale delle variabili e immettere espressioni variabili nella console di debug. Il debug va nel file VSCode per introspettersi attraverso il debugger





0

Il codice Go può essere eseguito in modo simile a REPL in Visual Studio Code con l'estensione Go e l'estensione Code Runner. Fare clic sul triangolo Esegui ▶, che è contrassegnato dal cursore del mouse nella schermata seguente per eseguire il codice e mostrare i risultati nel riquadro Output nella parte inferiore del codice di Visual Studio.

Quando si programma con Go Visual Studio Code, verranno suggerite ulteriori estensioni Go che possono essere installate per estendere le funzionalità di Visual Studio Code.

Vai in esecuzione nel codice di Visual Studio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.