2013-09-30 6 views
68

Czy istnieje standardowy dokument konwencji kodowania Google Go gdzieś, który określa, czy tabulatory lub spacje są preferowane dla wcięcia w kodzie źródłowym Go? Jeśli nie, jaka jest bardziej (statystycznie) popularna opcja?Wcięcie w ruchu: tabulatory lub spacje?

  1. Co to jest oficjalna rekomendacja? (jeśli występuje)
  2. Jaki jest bardziej popularny wybór?
+2

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

Odpowiedz

97

Oficjalne zalecenie formatowania kodu z

go fmt 

lub używając polecenia gofmt bezpośrednio

gofmt -w . 

Możesz przeczytać więcej na ten temat here na blogu golang.org lub od dokument Effective go:

Wcięcie
Używamy zakładek wcięcia, a gofmt domyślnie je emituje. Używaj spacji tylko, jeśli musisz.

+14

OK, więc są to karty. –

+1

Tak, oficjalne zalecenia to zakładki wcięcia. Możesz używać wcięcia przestrzeni jako @Intermernet wskazuje, ale nie jest to zalecenie. – ANisus

+13

@ErikAllik, tak naprawdę oficjalna pozycja nie jest "używać kart", ale raczej "użyj' go fmt' na swoim kodzie przed przesłaniem go "(zauważ, że jest też' gofmt'). Próbuję strees, że Go to zrobiłem * nie * po prostu deklarując politykę, ale stosując narzędzie, które ją wymusza. Jest to rzadkość, więc spróbuj zgiąć głowę wokół tego pomysłu i zaadoptuj 'go fmt'. Zauważ, że istnieją nawet automatyczne rozwiązania (na przykład oficjalna wtyczka Go dla Vima obsługuje polecenie ': Fmt', IIRC). – kostix

12

Według http://golang.org/src/cmd/gofmt/doc.go domyślne to:

EDIT: Oryginalny odpowiedź na dole jest nieprawidłowy. Prawidłowa sekcja połączonego pliku źródłowego (bieżący 25/07/2014) to:

Formaty Gofmt Programy Go.
Używa zakładek (width = 8) dla wcięcia i spacji dla wyrównania.

Original odpowiedź (przestarzałe):

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' i' -tabwidth' są [nieodebrane] (https://code.google.com/p/go/issues/detail? id = 7101) (i '-comments' nie jest już przynajmniej udokumentowany, nie przyjrzałem się bliżej) – William

+1

@billisphere Dzięki, zaktualizowałem odpowiedź z odpowiednią sekcją połączonego pliku . – Intermernet

+4

Gdy używasz znaków tabulacji, nie ma czegoś takiego jak użycie określonej szerokości tabulatora, więc opcja (poprzednia) tabulacji nie ma żadnego efektu, a część "zaktualizowanego tekstu" o szerokości = 8 powinna zostać usunięta. Ten błąd występuje również w połączonym źródle. – thomasrutter