5.2. 格式化

格式化是一个最有争议的问题。虽然人可以适应各种不同的风格,不过如果大家都遵循一个默认统一的 风格是最理想的。当然,这也是一个仁者见仁、智者见智的问题,不可能有一个终极的理想答案。

对于Go语言,我们采用不同的处理方法:让机器处理绝大部分的格式化工作。工具程序 gofmt可以根据需要将Go代码格式自动格式化为统一的风格。如果你想 了解格式化后代码的缩进方式,你可以直接运行gofmt,然后查看输出结果。

下面是一个例子,我们没有必要花时间手工调整类型中成员注释的对齐方式。Gofmt 可以自动将注释对齐。下面是结果的定义:

  type T struct {
      name string // name of the object
      value int // its value
  }

gofmt处理后的结果:

  type T struct {
      name    string // name of the object
      value   int    // its value
  }

Go语言库中的所有代码都是用gofmt工具格式化的。

格式化的一些细节:

缩进

我们使用tab缩进,gofmt也是默认用tab缩进。当然,也可以指定空白缩进。

行的长度

Go语言代码每行长度没有限制。不用担心一行的代码太长超出显式范围,gofmt会自动 处理太长的行。

小括号

Go语言很少使用括弧:对于控制结构(if,for,switch) 括弧也不是必须的。而且Go中表达式中运算符的优先级比较简洁,例如下面代码:

  x<<8 + y<<16

意思是x和y移位后相加。