Go 使用大括号进行语句分组,这种语法对于使用过 C 系列任何语言的程序员来说都很熟悉。然而,分号是用于解析器的,而不是用于人的,我们希望尽可能地消除它们。为了实现这个目标,Go 借鉴了 BCPL 的一个技巧:分隔语句的分号在形式语法中,但由词法分析器自动注入,无需先行在任何可能是语句末尾的行末尾添加分号。这在实践中非常有效,但就会导致大括号有一些强制写法。例如,函数的左大括号不能单独出现在一行上。
有些人认为词法分析器应该进行提前写好,以允许大括号存在于下一行。我们不同意。由于 Go 代码旨在由 gofmt 自动格式化,因此必须选择某种样式。这种风格可能与您在 C 或 Java 中使用的不同,但 Go 是一种不同的语言,而 gofmt 的风格与其他任何风格一样好。更重要的是。 Go 程序这种单一的、以编程方式强制要求的格式,比那些指定风格的语言表现更好。还要注意,Go 的风格意味着 Go 的交互式实现可以一次一行使用标准语法,没有特殊规则。