相信所有人在接触GO语言的时候都会清楚的察觉到GO语法的分隔不需要使用分号, Go使用大括号来进行语句分组,这是使用过C语言家族中任何一种语言的程序员都熟悉的语法。然而,分号是给解析器用的,不是给人用的,我们希望尽可能地消除分号。为了实现这个目标,Go 借用了 BCPL 的一个技巧:分隔语句的分号在形式语法中,但在任何一行可能是语句末尾的地方,都会被词典器自动注入,不需要看头。这在实践中效果非常好,但有一个效果,那就是它强行采用了括号样式。例如,一个函数的开头括号不能单独出现在一行上。
一些人认为,词法分析器应提前进行操作,以使花括号位于下一行。 我们不同意。 由于Go代码是由gofmt自动格式化的,因此必须选择某种样式。这种风格可能与你在C或Java中使用的不同,但Go是一种不同的语言,gofmt的风格与其他任何语言一样好。更重要的是--更重要的是--对所有的Go程序采用单一的、程序规定的格式的优势大大超过了任何认为的特定风格的缺点。还要注意的是,Go的风格意味着Go的交互式实现可以一次一行地使用标准语法,而不需要特殊的规则。
Golang 外文翻译:golang.org/doc/faq#sem…