2016-07-22 5 views
1

GoFmt Befehl formatiert nicht die Blume geschweifte Klammern ({}).GoLang GoFmt Befehl

Code:

package main 

import "fmt" 

func main() 
{ 
    fmt.Printf("Hello, world\n") 
} 

Ausgabe von gofmt hello.go

hello.go: 6: 1: erwartete Erklärung gefunden '{' Exit-Status 2

Wenn ich setzte die Räume, wo immer es richtig formatiert. Geht GoFMT die Klammern nicht formatieren?

+2

Beachten Sie, dass in Go die geschweiften Klammern verwendet werden soll Inline mit der Funktionsdeklaration! –

Antwort

6

Sie haben die geschweifte Klammer in der gleichen Zeile der Funktionsdeklaration setzen sonst Ihr Code wird nicht wegen dieser Syntaxfehler kompilieren

Warum gibt es klammern aber keine Semikolons? Und warum kann ich die öffnende Klammer nicht auf die nächste Linie legen?

Go verwendet Klammern Klammern für die Gruppierung von Anweisungen, eine Syntax vertraut mit Programmierer, die mit jeder Sprache in der C-Familie gearbeitet haben. Semikolons sind jedoch für Parser, nicht für Leute, und wir wollten so viel wie möglich beseitigen. Um dieses Ziel zu erreichen, borgt Go einen Trick von BCPL: Die Semikola, die Anweisungen trennen, sind in der formalen Grammatik , werden aber ohne Lookahead automatisch durch den Lexer am Ende jeder Zeile injiziert, die das Ende einer Anweisung sein könnte . Dies funktioniert sehr gut in der Praxis, hat aber den Effekt, dass es eine Klammer Stil zwingt. Zum Beispiel kann die öffnende Klammer einer Funktion nicht auf einer Zeile selbst erscheinen.

https://golang.org/doc/faq#semicolons

3

Code Syntaxfehler hat: setzt die offene geschweifte Klammer in der gleichen Zeile mit Funktionsdeklaration.

siehe:
und Ein Programmfragment muss ein syntaktisch gültigen für die Verwendung von gofmt seine https://golang.org/cmd/gofmt/ heißt es:

Wenn gofmt von der Standardeingabe liest, nimmt es entweder ein vollständiges Go Programm oder eine Programmfragment. Ein Programmfragment muss eine syntaktisch gültige Deklarationsliste, Anweisungsliste oder Ausdruck sein. Beim Formatieren eines solchen Fragments behält gofmt den führenden Einzug sowie führende und nachgestellte Leerzeichen bei, sodass einzelne Abschnitte von einem Go-Programm formatiert werden können, indem sie über gofmt weitergeleitet werden.

0

setzen die offene geschweifte Klammer in der gleichen Zeile mit Funktionsdeklaration vielleicht sollten Sie gofmt zu Ihrem Editor hinzugefügt haben, können sie die Probleme der Code-Format vermeiden