Wat deze tool doet
De Go formatter herschrijft Go-broncode in de ene canonieke stijl die de hele Go-community gebruikt. Plak een bestand of een snippet en je krijgt het terug met de inspringing, spatiëring, importgroepering en uitgelijnde structvelden en commentaren van gofmt.
Hij draait de echte gofmt uit de Go-toolchain, gecompileerd naar WebAssembly. Er wordt niets benaderd: wat je hier ziet is precies wat go fmt zou schrijven, dus geformatteerde code kun je committen zonder een diff in CI te veroorzaken.
Zo gebruik je het
- Plak Go-code, of open een
.go-bestand. - De geformatteerde code verschijnt rechts terwijl je typt.
- Houd Tab als inspringing voor code die je gaat committen. Kies 2 spaties of 4 spaties als de code in een document, een slide of op een site komt die tabs te breed toont.
- Kopieer of download het resultaat.
Als de code niet te parsen is, toont de tool de eerste fout met regel en kolom, bijvoorbeeld expected ')', found '{', en kun je direct naar die regel springen.
Voorbeeld
Het voorbeeld is een kort programma dat op zo weinig mogelijk regels is geperst: imports gescheiden door puntkomma’s, een struct op twee regels en functies zonder spaties rond operatoren. Na het formatteren:
- worden de imports een blok tussen haakjes met één package per regel;
- staan structvelden elk op een eigen regel en zijn hun types in een kolom uitgelijnd;
- wordt
if u.Age<18{if u.Age < 18 {met de body op een eigen regel; - krijgen composite literals spaties na komma’s en dubbele punten.
Wat gofmt wel en niet verandert
gofmt verandert alleen de opmaak. Het hernoemt nooit identifiers, verandert de volgorde van declaraties niet en verwijdert geen ongebruikte imports; dat is werk voor tools zoals goimports en go vet. Ook houdt het je regeleinden waar ze betekenis hebben, dus een lange argumentenlijst die je over meerdere regels hebt verdeeld, blijft verdeeld.
Commentaar blijft behouden en wordt opnieuw ingesprongen samen met de code eromheen. Commentaar aan het eind van opeenvolgende regels wordt in een kolom uitgelijnd, net als structvelden.
Tips
- Formatteren is een snelle manier om een ontbrekende accolade te vinden: de foutpositie wijst meestal naar de eerste regel na de fout.
- Draai de formatter voordat je code in een issue of review deelt. Reviewers kunnen zich dan richten op wat de code doet in plaats van hoe die eruitziet.
- Zet in je editor “format on save” aan met gopls, zodat je bestanden altijd overeenkomen met deze uitvoer.
Veelgestelde vragen
› Is dit de echte gofmt?
Ja. De formatter is de gofmt-code uit de Go-toolchain, gecompileerd naar WebAssembly, dus de uitvoer is byte voor byte wat `gofmt` of `go fmt` op je eigen machine geeft.
› Heb ik een package-clausule nodig?
Nee. Een volledig bestand werkt het best, maar gofmt accepteert ook een lijst met declaraties of een paar statements. Handig voor snippets die je uit een blogpost of chat kopieert.
› Waarom worden tabs gebruikt voor inspringing?
gofmt springt altijd in met tabs en lijnt uit met spaties. Dat is de Go-conventie, en editors tonen tabs op elke breedte die je wilt. Heb je spaties nodig voor een document of een slide, kies dan 2 of 4 spaties; alleen de tabs aan het begin van regels worden vervangen.
› Wordt mijn code geüpload?
Nee. De WebAssembly-module wordt één keer gedownload en het formatteren gebeurt lokaal in je browser.