go语言的流程控制主要有if , for和switch。
if else(分支结构)
go语言的if判断:
func main() {
score:=65
if score>=90{
fmt.Println("A")
}else if score>=80{
fmt.Println("B")
}else{
fmt.Println("C")
}
}
需要注意的两点:
1. 表达式不可以使用 ()
2. 起始花括号必须紧跟表达式后面,不可以另起一行
除此之外,if 判断写法还有另一种写法:
func main() {
if score:=65; score>=90{
fmt.Println("A")
}else if score>=80{
fmt.Println("B")
}else{
fmt.Println("C")
}
fmt.Println(score) // 报错,获取不到score
}
这种写法是把变量的定义写在表达式里了,这样写的作用是把变量定义在了局部。
for(循环结构)
for循环结构与其他语言也差不多:
for 初始语句;条件表达式;结束语句{
循环体语句
}
需要注意:
1. for后面不可以加 ()
2.花括号与if中的一样,不可以另起一行
例子:
func main() {
for i:=0;i<10;i++{
fmt.Println(i)
}
}
for循环的初始语句可以被忽略,但是初始语句后的分号必须要写,例如:
func main() {
i:=0
for ;i<10;i++{
fmt.Println(i)
}
}
for循环的初始语句和结束语句都可以省略,例如:
func main() {
i:=0
for i<10{
fmt.Println(i)
i++
}
}
switch case
基本用法:
func main() {
week:=3
switch week {
case 0:
fmt.Println("周日")
case 1:
fmt.Println("周一")
case 2:
fmt.Println("周二")
case 3:
fmt.Println("周三")
case 4:
fmt.Println("周四")
case 5:
fmt.Println("周五")
default:
fmt.Println("周六")
}
}
每个switch只能有一个default
一个分支可以有多个值,多个case值中间使用英文逗号分隔:
func main() {
num:=1
switch num {
case 1,3,5,7,9:
fmt.Println("这是奇数")
case 2,4,6,8,0:
fmt.Println("这是偶数")
default:
fmt.Println(num)
}
}
也可以把赋值放在switch里:
func main() {
switch num:=1; num {
case 1,3,5,7,9:
fmt.Println("这是奇数")
case 2,4,6,8,0:
fmt.Println("这是偶数")
default:
fmt.Println(num)
}
}
分支还可以使用表达式,这时候switch语句后面不需要再跟判断变量。例如:
func main() {
score:=90
switch {
case score>=90:
fmt.Println("优秀")
case score>=80:
fmt.Println("良好")
case score>=60:
fmt.Println("及格")
}
}
fallthrough 可以执行满足条件的case的下一个case:
func main() {
b:=true
switch b {
case true:
fmt.Println(1)
fallthrough
case false:
fmt.Println(2)
}
}
如上,不加 fallthrough 只打印 1,加上 fallthrough 打印 1 和 2