Go笔记(二):条件控制语句

发布时间 2023-04-11 09:39:14作者: 无虑的小猪

  Go语言中的if语句根据条件表达式的结果选择需要执行的业务流程。

1、if控制语句

1、if 语法

  语法详情如下:

if 条件表达式 {
    // 条件表达式为true,执行的代码块
}

  条件表达式必须返回布尔型的结果,与Java语法不同,在Go中,if的条件表达式不使用括号。

2、if/else 语法

  语法详情如下:

if 条件表达式 {
    // 条件表达式为true,执行的代码块
} else {
    // 条件表达式为false,执行的代码块
}

3、if/else if/else 语法

  语法详情如下:

if 条件表达式1 {
    // 条件表达式1为true,执行的代码块
}else if 条件表达式2 {
    // 条件表达式2为true,执行的代码块
}else {
    // 条件表达式1、条件表达式2都为false,执行的代码块
}

4、if嵌套 语法

  语法详情如下:

if 条件表达式1 {
     // 条件表达式1 为true时执行
    if 布尔表达式2 {
        // 条件表达式2 为true时执行
    }
}

5、示例代码

 1 package main
 2 
 3 import "fmt"
 4 
 5 // if 条件控制语句
 6 func conditionIf() {
 7    // 布尔型变量  if
 8    flag := true
 9    if flag {
10       fmt.Printf("conditionIf ==> flag: %v\n", flag)
11    }
12 }
13 
14 // if/else 条件控制语句
15 func conditionIfElse() {
16    // 返回结果为布尔型的条件表达式
17    age := 12
18    if age >= 18 {
19       fmt.Printf("age: %v,已成年\n", age)
20    } else {
21       fmt.Printf("age: %v,未成年\n", age)
22    }
23 }
24 
25 // if 嵌套
26 func nestIf() {
27    flag := true
28    flag01 := false
29 
30    if flag {
31       fmt.Printf("nestIf ==> flag: %v\n", flag)
32       // if 嵌套
33       if flag01 {
34          fmt.Printf("nestIf ==> flag: %v\n", flag01)
35       } else {
36          fmt.Printf("nestIf ==> flag: %v\n", flag01)
37       }
38    }else {
39       fmt.Printf("nestIf ==> flag: %v\n", flag)
40    }
41 }
42 
43 // if/elseif/else 条件控制语句
44 func conditionIfElseIfElse() {
45    score := 60.5
46    // 条件表达式1
47    if score < 60 {
48       fmt.Printf("score: %v,不合格\n", score)
49 
50    // 条件表达式2
51    } else if score >= 60 && score < 70 {
52       fmt.Printf("score: %v,合格\n", score)
53 
54    // 条件表达式3
55    } else if score >= 70 && score <= 80 {
56       fmt.Printf("score: %v,良好\n", score)
57 
58    // 条件表达式 1、2、3 都不成立
59    } else {
60       fmt.Printf("age: %v,优秀\n", score)
61    }
62 }
63 
64 func main() {
65    conditionIf()
66    conditionIfElse()
67    conditionIfElseIfElse()
68    nestIf()
69 }

2、switch控制语句

1、switch语法

  switch语句可以判断有多个值的情况,语法详情如下:

switch var1 {
    case var2:
        // do something
    case var3:
       // do something
    // var2、var3条件不成立时,执行default
    default:
       // do something     
}

  var2、var3可以是具体的值,也可以是条件表达式。当case中的条件都不满足时,执行default的流程。

  switch语句支持多条件匹配,并且不同的case之间不使用break分隔,默认只会执行一个case。

2、示例代码

 1 package main
 2 
 3 import "fmt"
 4 
 5 // switch 中 case 匹配具体值,单值
 6 func caseSingleValue() {
 7    //grade := "A"
 8    grade := "D"
 9    switch grade {
10    case "A":
11       fmt.Printf("优秀\n")
12    case "B":
13       fmt.Printf("良好\n")
14    case "C":
15       fmt.Printf("合格\n")
16    default:
17       fmt.Printf("不合格\n")
18    }
19 }
20 
21 // switch 中 case 匹配具体值,多值
22 func caseMultiValue() {
23    var day int
24    fmt.Println("请输入周几")
25    // 输入周几
26    fmt.Scan(&day)
27    switch day {
28    case 1, 2, 3, 4, 5:
29       fmt.Println("工作日")
30    case 6, 7:
31       fmt.Println("周末")
32    default:
33       fmt.Println("工作日")
34    }
35 }
36 
37 // switch 中 case 匹配条件表达式
38 func switchCondition() {
39    score := 70.5
40    switch {
41    case score >= 90 &&  score <= 100:
42       fmt.Printf("优秀\n")
43    case score >= 70 && score < 90:
44       fmt.Printf("良好\n")
45    case score >= 60 && score < 70:
46       fmt.Printf("合格\n")
47    default:
48       fmt.Printf("不合格\n")
49    }
50 }
51 
52 func main() {
53    caseSingleValue()
54    caseMultiValue()
55    switchCondition()
56 }