Golang中不一样的switch用法

举报
liuzhen007 发表于 2021/12/25 22:20:10 2021/12/25
【摘要】 目录前言正文结束前言Golang语言在流程控制方面也有其他语言所具备的 if、switch、for 三剑客。其中,if、for 用法基本上还算一致,除了需要特别注意一下语法问题。但是 switch 就不得不单独拿出来说道说道了,因为它的用法差异确实有些大。好了,今天的主要内容就是介绍Golang中的 switch 。正文说到Golang中的流程控制语句 switch,确实有必要讲一讲。首先,...

目录

前言

正文

结束

前言

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 语句。

结束

好了,今天Golang语言的 switch 的用法就介绍到这里。



[作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!😄]

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。