(转)Go语言switch语句和fallthrough用途

   Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面
的case代码:

示例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main
  
import "fmt"
  
func main() {
    num := 3
  
    switch num {
    case 1:
        fmt.Println("按下的是1楼")
    case 2:
        fmt.Println("按下的是2楼")
    case 3:
        fmt.Println("按下的是3楼")
    case 4:
        fmt.Println("按下的是4楼")
    }
}

#执行结果

1
按下的是3楼

示例2:

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 main() {
    num := 5
  
    switch num {
    case 1:
        fmt.Println("按下的是1楼")
        //break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。
    case 2:
        fmt.Println("按下的是2楼")
    case 3:
        fmt.Println("按下的是3楼")
    case 4:
        fmt.Println("按下的是4楼")
    default:
        fmt.Println("按下的是xxx楼")
    }
}

#执行结果

1
按下的是xxx楼

示例3: 需要输入按下的楼层

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 main() {
    var num int
    fmt.Printf("请按下楼层:")
    fmt.Scan(&num)
  
    switch num {
    case 1:
        fmt.Println("按下的是1楼")
    case 2:
        fmt.Println("按下的是2楼")
    case 3:
        fmt.Println("按下的是3楼")
    case 4:
        fmt.Println("按下的是4楼")
    default:
        fmt.Println("按下的是xxx楼")
    }
}

#执行结果:

1
2
请按下楼层:2   #输入2
按下的是2楼

用途:fallthrough //不跳出switch语句,后面的无条件执行

示例4:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
  
import "fmt"
  
func main() {
    var num int
    fmt.Printf("请按下楼层:")
    fmt.Scan(&num)
  
    switch num {
    case 1:
        fmt.Println("按下的是1楼")
        fallthrough //不跳出switch语句,后面的无条件执行
    case 2:
        fmt.Println("按下的是2楼")
        fallthrough
    case 3:
        fmt.Println("按下的是3楼")
        fallthrough
    case 4:
        fmt.Println("按下的是4楼")
        fallthrough
    default:
        fmt.Println("按下的是xxx楼")
    }
}

#执行结果

1
2
3
4
5
6
请按下楼层:1
按下的是1楼
按下的是2楼
按下的是3楼
按下的是4楼
按下的是xxx楼

示例5: (推荐用法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
  
import "fmt"
  
func main() {
  
    switch num := 1; num {
    case 1:
        fmt.Println("按下的是1楼")
    case 2:
        fmt.Println("按下的是2楼")
    case 3:
        fmt.Println("按下的是3楼")
    case 4:
        fmt.Println("按下的是4楼")
    default:
        fmt.Println("按下的是xxx楼")
    }
}

#执行结果:

1
按下的是1楼

示例6:  case 后面接数字,可以写多个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main //必须有一个main包
  
import "fmt"
  
func main() {
    //支持一个初始化语句, 初始化语句和变量本身, 以分号分隔
    switch num := 4; num { //switch后面写的是变量本身
    case 1:
        fmt.Println("按下的是1楼")
  
    case 2:
        fmt.Println("按下的是2楼")
  
    case 3, 4, 5:
        fmt.Println("按下的是yyy楼")
  
    case 6:
        fmt.Println("按下的是4楼")
  
    default:
        fmt.Println("按下的是xxx楼")
    }
}

#执行结果:

1
按下的是yyy楼  

示例7:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
  
import "fmt"
  
func main() {
    score := 85
    switch {
    case score > 90:  //case后面可以放条件
        fmt.Println("优秀")
    case score > 80:
        fmt.Println("良好")
    case score > 70:
        fmt.Println("一般")
    default:
        fmt.Println("其它")
    }
}

#执行结果:

良好

转自:https://www.cnblogs.com/nulige/p/10202141.html

posted @   人艰不拆_zmc  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2016-04-12 hibernate一对多注解
点击右上角即可分享
微信分享提示