Was dieses Tool macht
Der Go-Formatierer schreibt Go-Quellcode in den einen kanonischen Stil um, den die gesamte Go-Community verwendet. Füge eine Datei oder ein Snippet ein, und es kommt mit der Einrückung, den Abständen, der Import-Gruppierung und den ausgerichteten Struct-Feldern und Kommentaren von gofmt zurück.
Es läuft das echte gofmt aus der Go-Toolchain, kompiliert zu WebAssembly. Nichts wird nachgeahmt: Was du hier siehst, ist genau das, was go fmt schreiben würde. Formatierter Code lässt sich also committen, ohne in der CI einen Diff zu verursachen.
So funktioniert es
- Füge Go-Code ein oder öffne eine
.go-Datei. - Der formatierte Code erscheint während der Eingabe rechts.
- Behalte die Einrückung mit Tab für Code, den du committest. Wähle 2 Leerzeichen oder 4 Leerzeichen, wenn der Code in ein Dokument, eine Folie oder auf eine Website kommt, die Tabs zu breit darstellt.
- Kopiere das Ergebnis oder lade es herunter.
Lässt sich der Code nicht parsen, zeigt das Tool den ersten Fehler mit Zeile und Spalte an, zum Beispiel expected ')', found '{', und du kannst direkt zu dieser Zeile springen.
Beispiel
Das Beispiel ist ein kurzes Programm, das auf möglichst wenige Zeilen gequetscht ist: Imports durch Semikolons getrennt, ein Struct auf zwei Zeilen und Funktionen ohne Leerzeichen um Operatoren. Nach dem Formatieren:
- werden die Imports zu einem geklammerten Block mit einem Paket pro Zeile;
- stehen die Struct-Felder in eigenen Zeilen, ihre Typen in einer Spalte ausgerichtet;
- wird
if u.Age<18{zuif u.Age < 18 {, mit dem Rumpf in einer eigenen Zeile; - bekommen Composite Literals Leerzeichen nach Kommas und Doppelpunkten.
Was gofmt ändert und was nicht
gofmt ändert nur das Layout. Es benennt nie Bezeichner um, ordnet keine Deklarationen um und entfernt keine ungenutzten Imports; das ist Aufgabe von Tools wie goimports und go vet. Außerdem behält es deine Zeilenumbrüche dort, wo sie Bedeutung haben – eine lange Argumentliste, die du auf mehrere Zeilen verteilt hast, bleibt also verteilt.
Kommentare bleiben erhalten und werden mit dem umgebenden Code neu eingerückt. Nachgestellte Kommentare in aufeinanderfolgenden Zeilen werden in einer Spalte ausgerichtet, genau wie Struct-Felder.
Tipps
- Formatieren ist ein schneller Weg, eine fehlende Klammer zu finden: Die Fehlerposition zeigt meist auf die erste Zeile nach dem Fehler.
- Formatiere Code, bevor du ihn in einem Issue oder Review teilst. Reviewer können sich dann darauf konzentrieren, was der Code tut, statt wie er aussieht.
- Aktiviere in deinem Editor „Format on Save“ mit gopls, damit deine Dateien immer dieser Ausgabe entsprechen.
FAQ
› Ist das das echte gofmt?
Ja. Der Formatierer ist der gofmt-Code aus der Go-Toolchain, kompiliert zu WebAssembly. Die Ausgabe ist also Byte für Byte das, was `gofmt` oder `go fmt` auf deinem Rechner ausgibt.
› Brauche ich eine package-Klausel?
Nein. Eine vollständige Datei ist am besten, aber gofmt akzeptiert auch eine Liste von Deklarationen oder ein paar Anweisungen – praktisch für Snippets aus einem Blogartikel oder Chat.
› Warum wird mit Tabs eingerückt?
gofmt rückt immer mit Tabs ein und richtet mit Leerzeichen aus. Das ist die Go-Konvention, und Editoren zeigen Tabs in beliebiger Breite an. Brauchst du Leerzeichen für ein Dokument oder eine Folie, wähle 2 oder 4 Leerzeichen – dann werden nur die führenden Tabs ersetzt.
› Wird mein Code hochgeladen?
Nein. Das WebAssembly-Modul wird einmal heruntergeladen, und die Formatierung läuft lokal in deinem Browser.