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

Eri*_*lun 105 formatting indentation go

是否有一个标准的Google Go编码约定文档,用于设置是否首选标签或空格以用于Go源代码中的缩进?如果没有,那么(统计上)受欢迎的选项是什么?

  1. 什么是官方推荐?(如果有的话)
  2. 什么是更受欢迎的选择?

ANi*_*sus 172

官方建议使用格式化代码

go fmt
Run Code Online (Sandbox Code Playgroud)

或直接使用gofmt命令

gofmt -w .
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多关于它在这里的golang.org博客,或者从有效去文件:

缩进
我们使用制表符进行缩进,默认情况下gofmt会发出缩进.仅在必要时使用空格.

  • 好的,所以它是标签. (41认同)
  • @ErikAllik,实际上,官方立场不是"使用标签",而是"在提交之前在代码上使用`go fmt`"(注意还有`gofmt`).我试图强调的是,Go做到这一点*对*不仅仅是宣布一项政策,而是通过采用强制执行它的工具.这是不常见的,所以试着绕过这个想法并采用`go fmt`.请注意,甚至还有自动化解决方案(例如,Vim的官方Go插件支持`:Fmt`命令,IIRC). (15认同)
  • 我认为值得注意的是,采用/需要一个工具并不能阻止所有争论,但这确实意味着人们不会因为你固执的选择而对你生气,而是因为你接受了该工具(以及工具制造商)而生气他们固执的选择)。 (3认同)
  • 是的,缩进标签是官方推荐的。正如@Intermernet 所指出的,您_可以_使用空格缩进,但这不是建议。 (2认同)
  • @ErikAllik,[如果你对“没有编码约定参数”的看法是正确的......](https://groups.google.com/d/msg/golang-nuts/rzLzp_Z74ik/gc9xnEP0G40J);-) (2认同)

Int*_*net 20

根据http://golang.org/src/cmd/gofmt/doc.go,默认值为:

编辑:底部的原始答案现在不正确.链接源文件的正确部分(当前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.
Run Code Online (Sandbox Code Playgroud)

  • `-tabs`和`-tabwidth`已经[消失](https://code.google.com/p/go/issues/detail?id=7101)(并且至少不再记录`-comments`;避难所看得更近了) (4认同)
  • 当您使用制表符时,不存在使用特定制表符宽度的情况,因此(以前的)制表符宽度选项无效,应删除更新文本的"宽度= 8"部分.制表符宽度在查看器中配置.链接源中也存在此错误. (4认同)
  • @billisphere谢谢,我已经用链接文件的相关部分更新了答案. (2认同)
  • 这已经过时了。`gofmt` 命令的文档中不再提及制表符宽度。它已在这里删除:https://github.com/golang/go/commit/25b51810014cefb8dba31321fcf40eb1a008fc3e (2认同)