类似于C语言,Go的常规语法使用分号来表示结束状态,和C不同的是,这些分号不必出现在源码中。取而代之的是,自发分析器会使用一条简单的规则自动插入分号,因此在源码中基本就不用分号了。
规则是这样,如果在新行前的最后一个标记符(包含int和float64这类)、数值或字符串常量之类和基本标记。如下:
break continue fallthrough return ++ -- ) }
词法分析器始终会在标记后面插入分号。“如果新行前的标记为语句的末尾,则插入分号”
分号也可以在左右大括号省略。如下:
go func() { for { dst <- <-src } }()
通常GO程序只需要在for循环这样的狄梵使用分号。将初始化器、条件及增量元素分开。如果你在一行中写多个语句,也需要分号隔开。
func bubbleSort(a []int) {
if len(a) <= 1 {
return
}
for i := 0; i < len(a); i++ {
flag := false
for j := 0; j < len(a)-i-1; j++ {
if a[j] > a[j+1] {
temp := a[j]
a[j] = a[j+1]
a[j+1] = temp
flag = true
}
}
if !flag {
return
}
}
}
你不应该将控制结构如:if、for、switch或select,的左大括号放在下一行,这阳做会就会在大括号前插入一个分号,这可能会引起不需要的效果。
if i < f() {
g()
}
if i < f() // wrong!
{ // wrong!
g()
}