【问题标题】:Indentation in Go: tabs or spaces?Go 中的缩进:制表符还是空格?
【发布时间】:2013-09-30 12:48:12
【问题描述】:

在某处是否有标准的 Google Go 编码约定文档来设置在 Go 源代码中缩进时首选制表符还是空格?

如果有的话,官方的推荐是什么?

【问题讨论】:

标签: go formatting indentation gofmt


【解决方案1】:

官方建议使用

格式化你的代码
go fmt

或者直接使用 gofmt 命令

gofmt -w .

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

缩进
我们使用制表符进行缩进,gofmt 默认发出它们。仅在必要时使用空格。

【讨论】:

  • 是的,缩进制表符是官方推荐的。正如@Intermernet 指出的那样,您可以使用空格缩进,但这不是建议。
  • @ErikAllik,实际上,官方的立场不是“使用标签”,而是“在提交代码之前使用go fmt”(注意还有gofmt)。我要强调的是,Go 做到了这一点,正确不仅仅是通过声明一个策略,而是通过采用一个强制执行它的工具。这种情况并不常见,因此请尝试对这个想法低头并采用go fmt。请注意,甚至还有自动化解决方案(例如,Vim 的官方 Go 插件支持 :Fmt 命令,IIRC)。
  • 只是一个观察:go fmt 将在声明的字符串中保留空格缩进(“”和 ``),但会在其他地方使用制表符缩进代码。
  • 我认为值得注意的是,采用/要求工具并不能阻止所有争论,但这确实意味着人们不会因为你的自以为是的选择而生你的气,而是因为你接受了工具(以及工具制造商的自以为是的选择)。
【解决方案2】:

编辑 2: 他在底部的原始答案现在不正确。 linked source file(当前 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.

【讨论】:

  • -tabs-tabwidthgone(至少 -comments 不再记录;没有仔细查看)
  • @billisphere 谢谢,我已经用链接文件的相关部分更新了答案。
  • 当您使用制表符时,不存在使用特定制表符宽度的情况,因此(前)制表符宽度选项无效,更新文本的“width=8”部分应删除. 选项卡宽度在查看器中配置。链接源中也存在此错误。
  • 这已经过时了。 gofmt 命令的文档中不再提及制表符宽度。它已在此处删除:github.com/golang/go/commit/…
猜你喜欢
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2021-11-07
相关资源
最近更新 更多