Rientro in Go: tabulazioni o spazi?


125

Esiste un documento standard delle convenzioni di codifica di Google Go da qualche parte che stabilisce se le tabulazioni o gli spazi sono preferiti per il rientro nel codice sorgente di Go? In caso negativo, qual è l'opzione (statisticamente) più popolare?

  1. Qual è la raccomandazione ufficiale? (se presente)
  2. Qual è la scelta più popolare?

Risposte:


195

La raccomandazione ufficiale è formattare il codice con

go fmt

o utilizzando direttamente il comando gofmt

gofmt -w .

Puoi leggere di più al riguardo qui sul blog golang.org o dal documento Effective go :

Rientro
Usiamo le tabulazioni per il rientro e gofmt le emette di default. Usa gli spazi solo se devi.


59
OK, quindi le schede lo sono.
Erik Kaplun,

1
Sì, le schede per il rientro sono la raccomandazione ufficiale. È possibile utilizzare lo spazio di indentazione come sottolinea @Intermernet, ma non è la raccomandazione.
ANisus

19
@ErikAllik, in realtà, la posizione ufficiale non è "usa le schede" ma piuttosto "usa go fmtil tuo codice prima di inviarlo" (nota che c'è anche gofmt). Quello che sto cercando di stabilire è che Go abbia fatto questo bene non solo dichiarando una politica, ma adottando uno strumento che la impone. Questo è raro, quindi cerca di piegare la testa intorno a questa idea e adottala go fmt. Nota che ci sono anche soluzioni automatizzate (ad esempio, il plugin Go ufficiale per Vim supporta il :Fmtcomando, IIRC).
kostix


2
Penso che valga la pena notare che l'adozione / la richiesta di uno strumento non ferma tutte le discussioni, ma significa che invece di arrabbiarsi con te per le tue scelte supponenti, le persone si arrabbiano con te per aver accettato lo strumento (e con i produttori di strumenti per le loro scelte supponenti).
mtraceur

22

EDIT 2: la risposta originale in basso ora non è corretta. La sezione corretta del file sorgente collegato (attuale 30/12/2019) è:

Formatta Gofmt Go programmi. Utilizza le tabulazioni per il rientro e gli spazi per l'allineamento. L'allineamento presuppone che un editor utilizzi un carattere a larghezza fissa.

Grazie a TehSphinX per averlo segnalato!

TUTTE LE INFORMAZIONI SOTTO QUESTA RIGA ORA SONO ERRATE

EDIT: la risposta originale in fondo ora non è corretta. La sezione corretta del file sorgente collegato (attuale 25/07/2014) è:

Formatta Gofmt Go programmi.
Utilizza tabulazioni (larghezza = 8) per il rientro e spazi vuoti per l'allineamento.

Risposta originale (obsoleta):

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.

4
-tabse se ne -tabwidthsono andati (e -commentsnon è più documentato almeno; non ho guardato più da vicino)
William

2
@billisphere Grazie, ho aggiornato la risposta con la relativa sezione del file collegato.
Intermernet

5
Quando utilizzi i caratteri di tabulazione non è possibile utilizzare una particolare larghezza di tabulazione, quindi l'opzione (precedente) della larghezza di tabulazione non ha effetto e la parte "larghezza = 8" del testo aggiornato deve essere rimossa. La larghezza della tabulazione è configurata nel visualizzatore Questo errore esiste anche nella fonte collegata.
thomasrutter

2
Questo è obsoleto. Non si fa più menzione di una tabwidth nella documentazione del gofmtcomando. È stato rimosso qui: github.com/golang/go/commit/…
TehSphinX
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.