if
用法:
if condition {// do something
}
if condition {// do something
} else {// do something
}
if condition1 {// do something
} else if condition2 {// do something else
}else {// catch-all or default
}
switch
相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式:
switch var1 {case val1:...case val2:...default:...
}
for
for 初始化语句; 条件语句; 修饰语句 {}
示例:
for i := 0; i < 5; i++ {fmt.Printf("This is the %d iteration\n", i)}
for-range
这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合,语法上很类似其它语言中 foreach 语句。
for pos, char := range str {
...
}
示例:
var a = [10]int{1,2,3,4,5,6,7,8,9,0}
for _, e := range a {
fmt.Println(e)
}
Break 与 continue
break退出循环, continue调到下一个循环
for i:=0; i<3; i++ {for j:=0; j<10; j++ {if j>5 {break }print(j)}print(" ")}结果:012345 012345 012345
for i := 0; i < 10; i++ {if i == 5 {continue}print(i)print(" ")}
label
Go语言也支持label(标签)语法:分别是break labe、 goto label和continuelabel。
package mainimport "fmt"func main() {Loop:for i := 0; i < 10; i++ {fmt.Println("label i is ", i)for j := 0; j < 10; j++ {if j > 5 {//跳到外面去啦,但是不会再进来这个for循环了break Loop}}}//跳转语句 goto语句可以跳转到本函数内的某个标签gotoCount := 0
GotoLabel:gotoCount++if gotoCount < 10 {goto GotoLabel //如果小于10的话就跳转到GotoLabel}fmt.Println(gotoCount)a:=0Clabel:for a < 20 {if a == 15 {a++continue Clabel}fmt.Println(a)a++}
}
输出:
label i is 0
10
10
11
12
13
14
16
17
18
19
break label:跳转标签(label)必须放在循环语句for前面,并且在break label跳出循环不再进入for循环里的代码。
goto label: 跳转标签(label)可以放在循环语句for前面,也可以放在后面,建议放在后面,避免出现死循环。
continue label:和break label 类似,跳转标签只能放在for前面,不会跳出for循环,只是跳过当前单次循环,继续下一次迭代。跟单独使用continue效果一样。