go之switch语句

作用

  switch是为了优雅的替换掉if-else

语法

1
2
3
4
5
6
7
8
switch 变量 {
  case 条件:
    执行1
  case 条件2:
    执行2
  case 条件3:
    执行3
}

基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import "fmt"
 
func main() {
    var a =5
    switch a {
    case 3:
        fmt.Println("a是3")
    case 5:
        fmt.Println("a是5")
    case 10:
        fmt.Println("a是10")
    }
}<br>//a是5

default的使用(默认情况)

  其他情况都不匹配时,将运行默认的情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
    var a =2
    switch a {
    case 3:
        fmt.Println("a是3")
    case 5:
        fmt.Println("a是5")
    case 10:
        fmt.Println("a是10")
    default:
        fmt.Println("不知道你是几")
    }
}<br>// 不知道你是几

多表达式判断

  通过用逗号分隔,可以在一个case中包含多个表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
    var a =9
    switch a {
    case 1,2,3:
        fmt.Println("a是3")
    case 4,5,6,7,8,9:
        fmt.Println("a是5")
    case 10,11,12,15:
        fmt.Println("a是10")
    default:
        fmt.Println("不知道你是几")
    }
}<br>//a是5

无表达式

  在switch语句中,表达式是可选的,可以被省略。如果省略表达式,则表示这个switch语句等同于switch true ,并且每个case表达式都被认定为有效,相应的代码块也会被执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import "fmt"
 
func main() {
    var a = 4
    switch {
    case a == 2 || a == 3: // 条件
        fmt.Println("2,3")
    case a == 4: // 条件
        fmt.Println("4")
    default:
        fmt.Println("不知道")
    }
}<br>//4

Fallthrough的使用

  在go中,每执行完一个case后,会从switch语句中跳出来,不再做后续case的判断和执行,使用Fallthrough语句可以在已经执行完成的case之后,把控制权转移到下一个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 main() {
    var a = 4
    switch a {
    case 2, 3:
        fmt.Println("2,3")
        fallthrough
    case 4, 5:
        fmt.Println("4,5")
        fallthrough // 位置必须是case内部,五条件执行下一个
    case 6, 7:
        fmt.Println("6,7")
        //fallthrough  // 位置必须是case内部,五条件执行下一个
    default:
        fmt.Println("不知道")
    }
}<br>// 结果<br>//4,5<br>//6,7

  注意:Fallthrough语句应该是case子句的最后一个语句,如果他出现在了case语句的中间,编译器将会报错fallthrough statement out of place

 

posted @   那就凑个整吧  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示