Bietet Go REPL an?


200

Die interaktive Umgebung ist für einen Programmierer SEHR hilfreich. Es scheint jedoch, dass Go es nicht bereitstellt. Ist mein Verständnis richtig?

Antworten:


163

Nein, Go bietet keine REPL.

Wie bereits erwähnt, ist Go Playground (dies ist die neue URL) jedoch sehr praktisch. Die Go-Autoren denken auch darüber nach, einen funktionsreichen Editor hinzuzufügen.

Wenn Sie etwas Lokales möchten, sollten Sie hsandbox installieren . Wenn Sie es einfach mit ausführen, hsandbox gowird Ihr Terminalbildschirm (mit screen) geteilt, auf dem Sie oben Code schreiben und bei jedem Speichern die Ausführungsausgabe unten sehen können.

Es gab einen gotryStandard-Go-Befehl, der zum Auswerten von Ausdrücken (mit einem optionalen Paketnamen) verwendet wurde und wie gotry 1+2und gotry fmt 'Println("hello")'von der Shell ausgeführt werden konnte. Es ist nicht mehr verfügbar, da nicht viele Leute es tatsächlich benutzt haben.

Ich habe auch Projekte von Drittanbietern zum Erstellen einer REPL für Go gesehen, aber jetzt kann ich nur noch Links zu zwei davon finden: igo und go-repl . Wie gut sie funktionieren, weiß ich nicht.

Meine zwei Cent: Die Geschwindigkeit der Kompilierung ermöglicht das Schreiben einer REPL für Go, da dies auch zum Erstellen der hier genannten Tools beigetragen hat, aber die gleiche Geschwindigkeit macht REPL weniger notwendig. Jedes Mal, wenn ich etwas in Go testen möchte, das ich nicht auf Playground ausführen kann, öffne ich eine einfache .goDatei, beginne mit dem Codieren und führe den Code einfach aus. Dies wird noch einfacher, wenn der goBefehl in Go 1 den Erstellungsprozess mit einem Befehl ermöglicht und viel einfacher macht.

UPDATE: Letzte wöchentliche Version des goBefehls Go hinzugefügt , mit dem sehr einfach eine Datei erstellt werden kann: Schreiben Sie Ihre prog.goDatei und führen Sie sie ausgo build prog.go && ./prog

UPDATE 2 : Mit Go 1 können Sie Go-Programme direkt mit ausführengo run filename.go

UPDATE 3 : goreist ein neues Projekt, das interessant erscheint.


TL; DR igo Andere: Gore ist nicht sehr praktisch, da es einfügen und Strg-D erfordert. So etwas wie Reinteract for Go wäre Awesomesauce.

4
Es scheint zwei REPL-Projekte zu geben, die "Gore" genannt werden. Dieser wird aktiver gepflegt als der in der Antwort: github.com/motemen/gore
Bijan

1
Ha, ich wollte gerade das Gleiche posten. Ich habe gerade motemen/goredort gespielt - es ist ziemlich gut.
Darragh Enright

github.com/motemen/gore gore ist ziemlich gut und einfach zu bedienen.
17.


8

Sie haben auch ein aktuelles (März 2013) Projekt namens Gore von Sriram Srinivasan , das nützlich sein kann:

gore ist ein Befehlszeilen-Evaluator für Golang-Code - eine REPL ohne Schleife, wenn Sie so wollen.
Es ist ein Ersatz für den Go-Spielplatz und erleichtert das interaktive Ausprobieren von Code-Bits erheblich: Gore liefert automatisch Code auf der Kesselplatte wie Import- und Paketdeklarationen sowie einen Hauptfunktions-Wrapper .
Da es auf Ihrem eigenen Computer ausgeführt wird, wird aus Sicherheitsgründen kein Code abgelehnt (im Gegensatz zum sicheren Sandbox-Modus von go playground).


7

Haben Sie den Go Playground ausprobiert ?

Über den Go-Spielplatz

Der Go Playground ist ein Webdienst, der auf den Servern von golang.org ausgeführt wird. Der Dienst empfängt ein Go-Programm, kompiliert, verknüpft und führt das Programm in einer Sandbox aus. Anschließend wird die Ausgabe zurückgegeben.


4

Wenn Sie ein Vim-Benutzer sind, bietet das vim-go-Plugin ( https://github.com/fatih/vim-go ) einen Befehl (GoRun) zum Ausführen und Drucken der Ausgabe des aktuellen Puffers. Sie müssen immer noch den gesamten Boilerplate-Code einer Go-Hauptdatei einschließen, aber es bietet immer noch eine bequeme Möglichkeit, Codefragmente in Ihrer lokalen Umgebung schnell zu testen.

Geben Sie hier die Bildbeschreibung ein

HTH


Wie kann man die GoRun-Ausgabe im aktuellen Puffer machen? Mein Vim zeigt das in der Shell an
Vagabund

vim-go den ganzen Weg! Um noch einen Schritt weiter zu gehen, würde ich den Kesselplattencode entfernen, mein 'package_test.go' in den geteilten Puffer legen und weiter hämmern: GoTest &: GoCoverage. Meine 2 Cent ...
Rolandvarga

3

Das GoSpeccy- Projekt enthält eine integrierte REPL einer eingeschränkten Teilmenge der Go-Sprache. Die Implementierung verwendet goeval .


2

Nein, aber Sie können die Geschwindigkeit der Kompilierung ausnutzen (wie in anderen Antworten erwähnt).

Schauen Sie sich Rango an , das eine Generate-Compile-Run-Schleife verwendet, um eine REPL nachzuahmen. Sie können es auch mit Importen und Anweisungen starten, um eine interaktive Sitzung zu starten.


2

Ich hatte etwas Glück mit dem VSCode-Debugger, aber es ist ziemlich begrenzt, da Sie keine Funktionsaufrufe über die Debug-Konsole aufrufen können. Debug: Funktionsaufrufe nicht unterstützt # 2225 .

Grundsätzlich setzen Sie einen Haltepunkt, nachdem Sie Ihre launch.jsonDatei richtig konfiguriert haben . Anschließend können Sie links in der Variablenseitenleiste einen Drilldown durchführen und Variablenausdrücke in die Debug-Konsole eingeben. Debuggen Sie die go-Datei in VSCode, um sie über den Debugger zu überprüfen





0

Go-Code kann in Visual Studio Code mit der Erweiterung Go und der Erweiterung Code Runner auf REPL-ähnliche Weise ausgeführt werden. Klicken Sie auf das Dreieck Ausführen ▶, das im folgenden Screenshot mit dem Mauszeiger markiert ist, um den Code auszuführen und die Ergebnisse im Ausgabebereich unten im Visual Studio-Code anzuzeigen.

Beim Programmieren mit Go schlägt Visual Studio Code zusätzliche Go-Erweiterungen vor, die installiert werden können, um die Funktionalität von Visual Studio Code zu erweitern.

Führen Sie die Ausführung in Visual Studio Code aus

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.