今天开始,我们翻译学习Effective GO golang.org/doc/effecti…
这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战
格式问题是最有争议但最不重要的问题。人们可以适应不同的格式风格,但如果他们没有必要去适应,那就更好了,如果每个人都坚持相同的风格,那么花在该问题上的时间就会更少。问题是如何在没有冗长的规范风格指南的情况下接近这个理想情况。
在 Go 中,我们采用了一种不同寻常的方法,也就是让机器处理大多数格式问题。 gofmt 程序(也可用作 go fmt,它在包级别而不是源文件级别运行)读取 Go 程序并以标准的缩进和垂直对齐方式处理源代码,保留并在必要时重新格式化注释。如果你想知道如何处理一些新的布局情况,运行 gofmt;如果答案似乎不正确,请重新安排您的程序(或提交有关 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 进行格式化。
一些格式细节仍然存在。 非常简短:
缩进 我们使用制表符进行缩进,默认情况下 gofmt 会触发它们。 仅在必须时才使用空格。 行长 Go 没有行长限制。 不用担心每一行溢出。 如果一行感觉太长,请将其包裹起来并用额外的制表符缩进。 括弧 Go 需要的括号比 C 和 Java 少:控制结构(if、for、switch)的语法中没有括号。 此外,运算符优先级层次更短更清晰,因此
x<<8 + y<<16
上面代码中的空格就意味着间隔的含义。
adhire v 坚持
prescriptive 指定的,规范的
\