Golang中的switch语句

Golang中的switch语句,可以非常容易的判断多个值的情况。

Golang中switch语句的语法

1
2
3
4
5
6
7
8
switch  var1 {
case val1:
...
case val2:
...
default:
...
}

Golang中switch语句实例

判断成绩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
"fmt"
)

func f1() {
grade := 'A'
switch grade {
case 'A':
fmt.Println("优秀")
case 'B':
fmt.Println("良好")
case 'C':
fmt.Println("及格")
}
}

func main() {
f1()
}

运行结果

1
优秀

多条件匹配

Golang中switch语句,可以同时匹配多个条件,中间用逗号分隔,有其中一个匹配成功即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "fmt"

func f2() {
day := 3
switch day {
case 1, 2, 3, 4, 5:
fmt.Println("工作日")
case 6, 7:
fmt.Println("休息日")
default:
fmt.Println("错误输入")
}
}

func main() {
f2()
}


运行结果

1
工作日

case可以是条件表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "fmt"

func f3() {
score := 60
switch {
case score >= 60:
fmt.Println("及格")
case score >= 80 && score < 90:
fmt.Println("良好")
case score >= 90 && score <= 100:
fmt.Println("优秀")
default:
fmt.Println("不及格")
}
}

func main() {
f3()
}

运行结果

1
及格

fallthrough可以执行满足条件后的下一个case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import "fmt"

func f4() {
num := 100
switch num {
case 100:
fmt.Println("100")
fallthrough
case 200:
fmt.Println("200")
case 300:
fmt.Println("300")
}
}

func main() {
f4()
}

运行结果

1
2
100
200

Golang中switch语句的注意事项

  1. 支持多条件匹配
  2. 不同的case之间不使用break分隔,默认只会执行一个case
  3. 如果想要执行多个case,需要使用fallthrough关键字,也可用break中止
  4. 分支还可以使用表达式,例如:a>10
  5. 一个case中可以匹配多个值