Go und REPL: Wie das Debuggen ohne Konsole meine Karriere nicht ruiniert hat

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: „Wo ist meine Konsole?“

\n\n

Haben Sie sich jemals dabei ertappt, wie Sie dachten: „Ich würde jetzt gerne schnell eine Codezeile ausführen, eine Hypothese testen, mit der Syntax experimentieren – und dann weiterschreiben“? Wenn Sie von Python, JavaScript oder Ruby zu Go gekommen sind, stellt sich diese Frage besonders dringend. Dort gibt es REPL (Read-Eval-Print Loop) – eine interaktive Umgebung, in der Code zeilenweise ausgeführt wird. Sie schreiben 2 + 2 – und sehen sofort 4. Wunderbar!

\n\n

Aber dann öffnen Sie Go, schreiben go run main.go, kompilieren... und stellen fest: Die Magie fehlt. Oder doch nicht? Die Frage „Does Go provide a REPL?“ auf Stack Overflow hat tausende Aufrufe und Dutzende Kommentare gesammelt. Menschen sind verwirrt, enttäuscht und geben manchmal sogar die Sprache auf.

\n\n

In diesem Artikel erkläre ich, warum es in Go kein eingebautes REPL gibt, welche Tools es ersetzen können und – am wichtigsten – wie Sie typische Fehler vermeiden, die das Erlernen von Go zur Kopfschmerzquelle machen. Los geht's!

\n\n

Warum gibt es kein REPL in Go? (Und das ist kein Bug, sondern ein Feature)

\n\n

Der erste Fehler eines Anfängers ist es, das Fehlen eines REPL als Mangel der Sprache zu betrachten. Tatsächlich ist es eine architektonische Entscheidung. Go ist eine kompilierte, streng typisierte Sprache. REPL setzt Interpretation oder JIT-Kompilierung voraus, was der Philosophie von Go widerspricht: „Einfachheit, Geschwindigkeit, Vorhersagbarkeit“.

\n\n

Wenn Sie in Python im REPL schreiben, führt der Interpreter den Code Zeile für Zeile aus. In Go wird jedes Programm zuerst analysiert, in Maschinencode kompiliert und dann ausgeführt. Das bringt:

\n
    \n
  • Blitzschnelle Ausführungsgeschwindigkeit (keine Überraschungen in der Produktion);
  • \n
  • Strenge Typprüfung zur Kompilierzeit (weniger Fehler zur Laufzeit);
  • \n
  • Weniger Magie (Sie wissen genau, was Ihr Code tut).
  • \n
\n\n

Aber was ist mit schnellen Experimenten? Muss ich jedes Mal eine Datei main.go erstellen? Spoiler: Nein.

\n\n

Top-3-Fehler bei der Arbeit ohne REPL (und wie man sie vermeidet)

\n\n

Fehler Nr. 1: „Ich schreibe alles in eine Datei und führe es mit go run aus“

\n\n

Dies ist der häufigste Irrglaube. Anfänger erstellen eine riesige Datei main.go, stopfen den gesamten Code hinein, testen mit go run und wundern sich dann, warum der Compiler sich über ungenutzte Variablen oder Importe beschwert.

\n\n

Wie man es vermeidet: Verwenden Sie das Go Playground (play.golang.org). Dies ist ein offizielles Web-Tool, das wie ein Mini-REPL funktioniert. Sie schreiben Code, klicken auf „Run“ – und sehen das Ergebnis. Ja, es ist keine zeilenweise Eingabe, aber zum Testen von Syntax, Algorithmen oder kleinen Code-Stücken ist es ideal.

\n\n

Beispiel:

\n
package main\n\nimport "fmt"\n\nfunc main() {\n    message := "Hallo, Go REPL!"\n    fmt.Println(message)\n}
\n

Gestartet – Ausgabe erhalten. Schnell, sauber, ohne überflüssige Dateien.

\n\n

Fehler Nr. 2: „REPL in Go ist einfach go run ohne Speichern“

\n\n

Einige versuchen, go run als REPL zu verwenden: Sie schreiben Code direkt im Terminal mit echo oder cat. Das funktioniert nur für triviale Beispiele, aber sobald Importe, Pakete oder Kompilierungsfehler auftauchen, bricht alles zusammen.

\n\n

Wie man es vermeidet: Installieren Sie gore – das ist fast ein vollwertiges REPL für Go. Es ermöglicht das Ausführen von Ausdrücken, das Deklarieren von Variablen und sogar das Importieren von Paketen im interaktiven Modus.

\n\n

Installation:

\n
go install github.com/motemen/gore@latest
\n

Starten:

\n
gore
\n

Beispiel der Arbeit:

\n
gore> 2 + 2\n4\ngore> import "fmt"\ngore> fmt.Println("Hallo von gore!")\nHallo von gore!
\n

Nicht perfekt, aber dem klassischen REPL sehr nahe. Hauptsache, Sie vergessen nicht, dass es sich um ein Drittanbieter-Tool handelt und es nicht alle Sprachfunktionen unterstützt (z. B. können Goroutinen im interaktiven Modus unerwartet reagieren).

\n\n

Fehler Nr. 3: „Ich schreibe Tests in main() und führe sie aus“

Blogs

Buchempfehlungen