加载中...

格式


格式化是一个最具争议,但又无关紧要的问题。人们可以习惯于不同的格式风格。但是,最好不必这样,这就不用在每个人是否遵守相同风格的话题上花费时间了。问题是在没有一个长效的风格指导下,如何达到这样美好的乌托邦。

对于Go,我们采取了不同寻常的方式,让机器来处理大多数的格式问题。程序gofmt(也可以用go fmt,其操作于程序包的级别,而不是源文件级别),读入一个Go程序,然后输出按照标准风格缩进和垂直对齐的源码,并且保留了根据需要进行重新格式化的注释。如果你想知道如何处理某种新的布局情况,可以运行gofmt;如果答案看起来不正确,则需要重新组织你的程序(或者提交一个关于gofmt的bug),不要把问题绕过去。

举个例子,不需要花费时间对结构体中每个域的注释进行排列。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的缺省输出。只有在你必须的时候才使用空格。

行长度

Go没有行长度限制。不必担心会有打孔卡片溢出。如果感觉一行太长,可以折成几行,并额外使用一个tab进行缩进。

括号

Go相比C和Java,很少需要括号:控制结构(ifforswitch)的语法不需要括号。而且,操作符优先级更短,更清晰。这样,

x<<8 + y<<16

的含义就已经由空格表明了。这不像其它语言。


还没有评论.