Indentation dans Go: tabulations ou espaces?


125

Existe-t-il un document de conventions de codage Google Go standard quelque part qui définit si les tabulations ou les espaces sont préférés pour l'indentation dans le code source Go? Sinon, quelle est l'option (statistiquement) la plus populaire?

  1. Quelle est la recommandation officielle? (si seulement)
  2. Quel est le choix le plus populaire?

Réponses:


195

La recommandation officielle consiste à formater votre code avec

go fmt

ou en utilisant directement la commande gofmt

gofmt -w .

Vous pouvez en savoir plus ici sur le blog golang.org ou dans le document Effective go :

Indentation
Nous utilisons des tabulations pour l'indentation et gofmt les émet par défaut. N'utilisez des espaces que si vous le devez.


59
OK, donc les onglets.
Erik Kaplun

1
Oui, les onglets pour l'indentation sont la recommandation officielle. Vous pouvez utiliser l'indentation d'espace comme le souligne @Intermernet, mais ce n'est pas la recommandation.
ANisus

19
@ErikAllik, en fait, la position officielle n'est pas "utiliser les onglets" mais plutôt "utiliser go fmtsur votre code avant de le soumettre" (notez qu'il y en a aussi gofmt). Ce que j'essaie de dire, c'est que Go a bien fait non pas simplement en déclarant une politique, mais en adoptant un outil qui la met en application. C'est rare, alors essayez de plier la tête autour de cette idée et de l'adopter go fmt. Notez qu'il existe même des solutions automatisées (par exemple, le plugin officiel Go pour Vim prend en charge la :Fmtcommande, IIRC).
kostix


2
Je pense qu'il vaut la peine de noter qu'adopter / exiger un outil n'arrête pas tous les arguments, mais cela signifie qu'au lieu que les gens se fâchent contre vous pour vos choix avisés, les gens se fâchent contre vous pour avoir accepté l'outil (et contre les fabricants d'outils pour leurs choix avisés).
mtraceur

22

EDIT 2: la réponse originale en bas est maintenant incorrecte. La section correcte du fichier source lié (30/12/2019 actuel) est:

Gofmt formate les programmes Go. Il utilise des tabulations pour l'indentation et des blancs pour l'alignement. L'alignement suppose qu'un éditeur utilise une police à largeur fixe.

Merci à TehSphinX pour l'avoir signalé!

TOUTES LES INFORMATIONS SOUS CETTE LIGNE SONT MAINTENANT INCORRECTES

EDIT: La réponse originale en bas est maintenant incorrecte. La section correcte du fichier source lié (actuel 25/07/2014) est:

Gofmt formate les programmes Go.
Il utilise des tabulations (largeur = 8) pour l'indentation et des blancs pour l'alignement.

Réponse d'origine (obsolète):

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
-tabset -tabwidthsont partis (et -commentsn'est plus documenté au moins; je n'ai pas regardé de plus près)
William

2
@billisphere Merci, j'ai mis à jour la réponse avec la section correspondante du fichier lié.
Intermernet

5
Lorsque vous utilisez des caractères de tabulation, il n'est pas possible d'utiliser une largeur de tabulation particulière, donc l'option (ancienne) tabwidth n'a aucun effet et la partie "width = 8" du texte mis à jour doit être supprimée. La largeur de tabulation est configurée dans le visualiseur . Cette erreur existe également dans la source liée.
thomasrutter

2
C'est obsolète. Il n'y a plus de mention d'un tabwidth dans la documentation de la gofmtcommande. Il a été supprimé ici: github.com/golang/go/commit/…
TehSphinX
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.