分号
和C一样,Go的正式语法使用分号来结束语句,和C不同的是,这些分号并不在源码中出现。 取而代之,词法分析器会使用一条简单的规则来自动插入分号,因此源码中基本就不用分号了。
规则是这样的:若在新行前的最后一个标记为标识符(包括 int
和 float64
这类的单词)、数值或字符串常量之类的基本字面或以下标记之一
break continue fallthrough return ++ -- ) }
则词法分析将始终在该标记后面插入分号。这点可以概括为: “如果新行前的标记为语句的末尾,则插入分号”。
分号也可在闭括号之前直接省略,因此像
go func() { for { dst <- <-src } }()
这样的语句无需分号。通常Go程序只在诸如 for
循环子句这样的地方使用分号, 以此来将初始化器、条件及增量元素分开。如果你在一行中写多个语句,也需要用分号隔开。
警告:无论如何,你都不应将一个控制结构(if
、for
、switch
或 select
)的左大括号放在下一行。如果这样做,就会在大括号前面插入一个分号,这可能引起不需要的效果。 你应该这样写
if i < f() {
g()
}
而不是这样写
if i < f() // 错误!
{ // 错误!
g()
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。