Go语言流程控制,六

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