Go中的缩进:制表符还是空格?


Answers:


195

官方建议使用以下格式格式化代码

go fmt

或直接使用gofmt命令

gofmt -w .

您可以在golang.org博客上或从Effective go文档中了解有关内容的更多信息:

缩进
我们使用缩进标签,默认情况下gofmt会发出标签。仅在必要时使用空格。


59
好的,就是标签。
Erik Kaplun

1
是的,缩进标签是官方建议。您可以使用@Intermernet指出的空格缩进,但这不是建议。
ANisus 2013年

19
@ErikAllik,实际上,正式职位不是“使用选项卡”,而是“ go fmt在提交代码之前在代码上使用”(请注意还有gofmt)。我试图以期应激是去这样做的权利由刚刚宣布一项政策,但通过采用一个工具,它强制它不是。这很罕见,因此请尝试绕开这个想法并采用go fmt。请注意,甚至还有自动化的解决方案(例如,Vim的官方Go插件支持:FmtIIRC命令)。
kostix


2
我认为值得一提的是,采用/要求一种工具并不能阻止所有争论,但这确实意味着,人们在为您接受选择而生气的同时,不是因为您为自己选择的选择而生气,而是为了接受工具而生气。他们自以为是的选择)。
mtraceur '18

22

编辑2:他在底部的原始答案现在不正确。链接的源文件的正确部分(当前为30/12/2019)是:

Gofmt格式Go程序。它使用制表符进行缩进,并使用空格进行对齐。对齐方式假定编辑器使用的是固定宽度的字体。

感谢TehSphinX指出这一点!

此行下的所有信息现在都不正确

编辑:在底部的原始答案现在不正确。链接的源文件的正确部分(当前为25/07/2014)为:

Gofmt格式Go程序。
它使用制表符(宽度= 8)进行缩进,并使用空格进行对齐。

原始答案(已弃用):

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
-tabs-tabwidth(而-comments不再记录至少,还没有更深入研究)
威廉·

2
@billisphere谢谢,我已经用链接文件的相关部分更新了答案。
Intermernet 2014年

5
使用制表符时,不会使用特定的制表符宽度,因此(以前的)制表符选项无效,并且应删除更新文本的“ width = 8”部分。制表符宽度在查看器中配置在链接的源中也存在此错误
thomasrutter

2
这已经过时了。在gofmt命令的文档中不再提及制表符宽度。它已在此处删除:github.com/golang/go/commit/…–
TehSphinX
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.