【Golang系列】-流程控制

2022-03-07

流程控制
if语句

根据给定的条件表达式运算结果来,判断执行流程
语法:

if 布尔表达式 {
在布尔表达式为ture时执行
}

初始变量可以声明再布尔表达式里面注意作用域

package main

func main() {
    if age := 16; age >= 18 {
        println("你成年了")
    } else {
        println("你再多吃几年饭")
    }
}

注意:不能使用0或非0来表示真假

使用提示:

不需要使用括号将条件包含起来
大括号{}必须存在,即使一行语句
左括号必须在if 或 else的同一行
在if之后,条件语句之前,可以添加变量初始化语句 使用;进行分隔

if嵌套
package main

import "fmt"

func f2() {
    gread := "女"
    age := 15
    if gread == "男" {
        if age >= 18 {
            fmt.Println("成年男")
        } else {
            fmt.Println("未成年男")
        }
    } else {
        if age >= 18 {
            fmt.Println("成年女")
        } else {
            fmt.Println("未成年女")
        }
    }
}

func main() {
    f2()
}

switch语句

语法:

switch var1 {
    case varl:
        ...
    case var2:
        ...
    default:
        ...
}

示例
package main
import "fmt"
func f2() {
    grade := "C"
    switch grade {
    case "A":
        fmt.Println("优秀")
    case "B":
        fmt.Println("良好")
    case "C":
        fmt.Println("可以")
    default:
        fmt.Println("不及格")
    }
}
func main() {
    f2()
}

多条件匹配

可以同时匹配多个条件,中间用,分隔,有一个匹配成功即可

package main
import "fmt"
func f2() {
    day := 4
    switch day {
    case 1, 2, 3, 4, 5:
        fmt.Println("工作日")
    case 6,7
        fmt.Println("休息日")
    default:
        fmt.Println("非法参数")
    }
}
func main() {
    f2()
}

case 可以是条件表达式

case fallthrouht
package main
import "fmt"
func f2() {
    a := 100
    switch a {
    case 100:
        fmt.Println("100")
        fallthrough
    case 200:
        fmt.Println("200")
    case 300:
        fmt.Println("300")
    }
}
func main() {
    f2()
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter04/dome06.go"
100
200
[Done] exited with code=0 in 0.57 seconds

注意事项:

支持多条件匹配
不同case之间不使用break分隔 默认只执行一个case
如果想要执行多个case 需要使用fallthroght关键字,也可以是break终止
分支可以使用表达式:a>10