高效的 Go 编程 Effective Go - 分号
免费 - Sunrise - - 浏览量: 0 - 文章来源
和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()
}