golang中的控制语句相较于其他语言书写更简介
if语句中条件不需要加{},并且在if语句中声明的变量在if以外的地方不能够使用
if a, b := 1, 2; a < b {
fmt.Println(a)
fmt.Println(b)
fmt.Println("a比b小")
}else{
fmt.Println("a比b大")
}
//fmt.Println(a) 如果在if语句外加入这句语句,程序报错,因为a,b只在if方法中有效
程序输出:
1
2
a比b小
在golang中循环语句只有for循环,for循环有三种表达方式
for a, b := 0 ,4; a < b; a, b = a+1, b-1 { //在for循环中同样支持平行赋值,注意在多个变量自加时a++, b++ 会导致编译错误
fmt.Println(a)
}
a := 0
for a < 3 {
a++
fmt.Println(a)
}
a := 0
for {
a++
fmt.Println(a)
}
goto,continue,break控制
一般都使用标签来进行控制
goto:
TAB: for a := 0; a < 10; a++ {
fmt.Println(a)
goto TAB
} //goto会进行语句跳转时,对语句进行了重置,所以这个for循环是一个死循环,会无限打印0,一般使用goto时标签多用语循环语句之后
continue:
TAB: for a := 0; a < 10; a++ {
fmt.Println(a)
continue TAB
} //将goto替换成continue后,语句同样会进行跳转,但并不会对语句进行重置,所以正常输出0,1,2,3,4,5,6,7,8,9
break:
TAB: for a := 0; a < 10; a++ {
fmt.Println(a)
break TAB
} //替换成break后,语句直接跳出TAB标签的循环,输出0
switch语句:
switch语句是最灵活的一种控制语句,表达式可以不是常量或者字符串,也可以没有表达式
一般来说,表达式中没有条件,可以在case中填写条件
a := 2
switch a {
case 1:
fmt.Println("case0")
case 2:
fmt.Println("case1")
default:
fmt.Println("Other")
}
下面我们来看一个switch语句
a := 2
switch {
case a > 0:
fmt.Println("case0")
case a > 1:
fmt.Println("case1")
default:
fmt.Println("Other")
}
语句输出:
case0
因为在switch语句中,当条件成立,case后面有隐式的break语句,当然也可以显式的表达出来,但是上面语句中,2既大于0,又大于1,怎么办呢,switch中有一个fallthrough语句来控制switch语句继续执行
a := 2
switch {
case a > 0:
fmt.Println("case0")
fallthrough
case a > 1:
fmt.Println("case1")
default:
fmt.Println("Other")
}
语句输出:
case0
case1
这样就能继续判断后面的条件是否成立了