学习需要耐心&&时间,更重要的是你要学会坚持!
当前位置:首页 > Go语言 > 正文

Golang 中不一样的 switch 用法

2022-08-01 Go语言 Go语言圈


前言

Golang 语言在流程控制方面也有其他语言所具备的 if、switch、for 三剑客。其中,if、for 用法基本上还算一致,除了需要特别注意一下语法问题。但是 switch 就不得不单独拿出来说道说道了,因为它的用法差异确实有些大。
好了,今天的主要内容就是介绍 Golang 中的 switch 。

正文
说到 Golang 中的流程控制语句 switch,确实有必要讲一讲。
首先,我们来说一说 switch 和 if 的区别是。我们都知道 if 之后只能是 bool 类型, 而 switch 可以是其他类型。但是 case 后面的数据必须和 switch 变量类型一致。 
另外,case 是没有先后顺序的,只要符合条件就会进入。

最后,说一说 switch 和其他语言最为不同的一点:没有 break 语句,每个 case 默认都带着 break 语句。
这么说,可能大家不是能够理解的很清楚。

接下来,我们通过一段代码同时结合代码的执行结果来分析一下 switch 的这个特性。
package main

import "fmt"

func main() {
    num := 2
    switch num{
    case 1:
        fmt.Println("num的数值是1")
    case 2:
        fmt.Println("num的数值是2")
    case 3:
        fmt.Println("num的数值是3")
    case 4,5,6:
        fmt.Println("num的数值可能是4,5,6")
    default:
                fmt.Println("执行default语句")
    }
    fmt.Println("程序结束了")
}
 
代码的执行结果:
num 的数值是 2 程序结束了
 
根据结果我们可以知道,尽管 case 2 语句后面没有 break 语句,switch 也跳出了当前的控制流程。


fallthrough

接下来,再介绍一个在 Golang 中 switch 的特殊用法——fallthrough。
这个 fallthrough 语句的作用是强制执行 case 后面的没有执行的 case 代码,具体怎么使用,我们通过一段代码来了解一下。
 
我们修改上面的代码,在 case 2 语句后边加上 fallthrough 语句。
代码实例:
package main

import "fmt"

func main() {
    num := 2
    switch num{
    case 1:
        fmt.Println("num的数值是1")
    case 2:
        fmt.Println("num的数值是2")
    fallthrough
    case 3:
        fmt.Println("num的数值是3")
    case 4,5,6:
        fmt.Println("num的数值可能是4,5,6")
    default:
                fmt.Println("执行default语句")
    }
    fmt.Println("程序结束了")
}
 
代码执行结果:
num 的数值是 2 num 的数值是 3 程序结束了
 
通过代码,我们可以知道 fallthrough 只作用于当前 case,只多向下执行一个 case,而不是执行整个 switch 语句。
 

以上是本文的全部内容,希望对大家学习有帮助,也希望大家多多支持 磊丰的技术博客 感谢阅读!

站长磊丰学长
男,文化程度不高,性格有点犯二,爱好学习与分享,闲着没事喜欢研究各种代码,写写文章,潜水技术宅。
关注公众号:PHP自学中心
关注公众号:Go语言学习圈
学习与交流:程序员技术微信群

标签

网站工具箱