2013-09-30 8 views
68

Gibt es irgendwo in Google Kodierungskonventionen ein Standarddokument, das festlegt, ob Tabs oder Leerzeichen für den Einzug im Quellcode von Go bevorzugt werden? Wenn nicht, was ist die (statistisch) beliebte Option?Einrückung in Go: Tabulatoren oder Leerzeichen?

  1. Was ist die offizielle Empfehlung? (falls vorhanden)
  2. Was ist die beliebte Wahl?
+2

https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of -code-spaces-or-tabs-7cfe0b5dd7fd # .o1d3cmm5r –

Antwort

97

Die offizielle Empfehlung formatiert Ihren Code mit

go fmt 

oder mit dem gofmt Befehl direkt

gofmt -w . 

Sie können mehr über sie here auf dem golang.org Blog lesen, oder aus das Effective go Dokument:

Einrückung
Wir verwenden Tabs für die Einrückung und GoFmt gibt sie standardmäßig aus. Verwenden Sie nur Leerzeichen, wenn Sie müssen.

+14

OK, also Tabs ist es. –

+1

Ja, Tabs für den Einzug ist die offizielle Empfehlung. Sie können Raumeinrückung verwenden, wie @Intermernet darauf hinweist, aber es ist nicht die Empfehlung. – ANisus

+13

@ErikAllik, eigentlich ist die offizielle Position nicht "Benutze Tabs", sondern "benutze' fmt' auf deinem Code, bevor du es einreichst "(es gibt auch' gofmt'). Was ich versuche zu streunen ist, dass ich das * richtig * getan habe, indem ich nicht nur eine Richtlinie deklariert habe, sondern ein Werkzeug angenommen habe, das es durchsetzt. Das ist ungewöhnlich, also versuchen Sie, diese Idee zu umgehen und "go fmt" zu übernehmen. Beachten Sie, dass es sogar automatisierte Lösungen gibt (zum Beispiel unterstützt das offizielle Go-Plugin für Vim den Befehl ': Fmt', IIRC). – kostix

12

Nach http://golang.org/src/cmd/gofmt/doc.go die Standardeinstellungen sind:

EDIT: Die ursprüngliche Antwort an der Unterseite ist jetzt falsch. Der korrekte Abschnitt der verknüpften Quelldatei (aktuell 25.07.2014) lautet:

GoFmt-Formate Go-Programme.
Es verwendet Tabs (Breite = 8) für die Einrückung und Leerzeichen für die Ausrichtung.

Original-Antwort (veraltet):

Formatting control flags: 
    -comments=true 
     Print comments; if false, all comments are elided from the output. 
    -tabs=true 
     Indent with tabs; if false, spaces are used instead. 
    -tabwidth=8 
     Tab width in spaces. 
+3

'tabs' und' tabwidth' sind [going] (https://code.google.com/p/go/issues/detail? id = 7101) (und '-comments' ist zumindest nicht mehr dokumentiert; habe nicht genauer hingeschaut) – William

+1

@billisphere Danke, ich habe die Antwort mit dem entsprechenden Abschnitt der verknüpften Datei aktualisiert . – Intermernet

+4

Wenn Sie Tabulatorzeichen verwenden, gibt es keine Verwendung einer bestimmten Tabbreite, so dass die (ehemalige) Tabwidth-Option keine Wirkung hat und der "width = 8" -Teil des aktualisierten Textes entfernt werden sollte Dieser Fehler ist auch in der verknüpften Quelle vorhanden. – thomasrutter

Verwandte Themen