00:00
各位。我们继续来学习go里面的另外一种分支结构,叫Switch分支结构,大家都知道,Switch分支呢,在很多的编程语言里面都有。各位在go里面呢,它也有Switch分支结构。或者叫分支控制都可以,但是呢,Go浪里面的Switch跟其他编程语言里面的Switch还是有很大差别的,诶,很大差别的,那么我们来看看go浪里边的Switch分支结构是有哪些特点来吧,我们老规矩打开笔记对不对,把笔记呢打开,我们一边讲呢,一边做笔记,一边给大家进行代码的分析和课和这个。案例的讲解。OK,好,我们看一下下一个。那首先我们还是来看一下顺序分支的基本介绍。那Switch是干什么的呢?是这样子啊各位,Switch语句用于基于不同条件执行不同的动作,这句话说的有有一点绕,其实说白了就是匹配,匹配一个表达式,匹配上位勾,我就去执行它,每一个case分支都是唯一的,从上到下主义测试,直到匹配为止。
01:17
哎,那这句话呢,听起来有点绕口,对不对,有点绕口,后边呢,我们把这个基本语法一说大家就知道了,他这里主要是看有这么一个东西,就是每一个case分支都是唯一的,然后呢,从上到下逐一测试,诶,直到匹配为止,如果匹配不到呢,就执行那个默认的分支。第二个在勾浪里面呢,匹配号匹配项的后面不需要再加break了,注意这点我标红了啊,不需要再加break,传统的编程语言里面的Switch分支呢,都需要带一个break,而goon他认为几乎所有的case都会带break,所以说他就干脆说了,你不用带break,我默认就有一个break OK,好,我们先把它的基本介绍给大家,放到笔记里边来。
02:12
好,我们把它列到新的一个小的分支章节。问题吧。好,我们先说说去分支。是位分支控制对不对,我们给它来一个标题二。我们来一个标题二朱听,那刚才老师做了一个基本的介绍,那基本介绍我刚才说什么了呀,我介绍了一下我们这一个。Switch它是用来做什么的?那这段呢,老师就不用再写了。我就直接放到笔记里面来,好加深一个印象,好稍微的进行一个板书。这里呢,我强调一下啊,强调一下就是在go浪里面呢,呃,匹配项后面不需要加break语句,这点是它的一个非常重大的一个变化,哎,不要画蛇添足,就这意思。
03:07
那有了这个东西呢?诶,那么我们来看一下Switch的基本语法。它的基本语法是什么样子的,好老规矩,我们这里面呢,还是不要用这种字体了啊,红色给它来一个标题三。给他来一个标题三,它的基本语法是什么样子的,大家大家来看一看啊,嗯,它的基本语法是如此这般的,大家看Switch这边有一个表达式,注意啊,一提到表达式就意味着。这个地方只要是返回一个值就可以了,能理解我的意思吗?注意什么叫表达式,在勾勒里面任何有值的都可以称之为表达式,大家再看这里case case是什么意思啊?就是当什么什么,什么时候当什么呀,当你的这个表达式。就是老师说的这个东西,当你的这个表达式等于了K1或等于了表达式一这个值或者等于了表达式二,这个值看到没有又是一个变化,我们一般的传统的这个Switch case结构呢,它是。
04:13
Case后面只能有一个表达式,对不对?表达式就是值啊,再说一遍。但是呢,在勾端里面,它是可以匹配多个的。哎,就是说我这个表达式如果匹配到这个这个第一个表达式,或者匹配不到第二个表达式都OK。啊,都OK,然后呢,只要这个表达式的值匹配到表达式一,或者匹配到表达式二,那么它就执行。这个语句块执执行完毕过后,大家看后面没有break语句执行完了怎么样呢?就退出了。理解。没什么问题吧,这个地方啊,说老师诶,别的地方都有break,我告诉大家功能就没有。因为他认为你都有这个break我就干脆,或者你有break的概率非常大,那么干脆呢,我就干什么,就不要这个break了,就默认给你加上就完了。
05:03
其他意思类推,如果这个表达式的值它不匹配表达式一,也不匹配表达式二,这怎么样呢?就看匹不匹配表达式三,或者匹不匹配表达式四,如果有成立的话,诶,它可以执行这这里有可以有多个case,最后如果一个都没匹配到怎么办呢?执行DBOT里面的语句块。好,这就是他的基本语法,看懂好了,我把这个基本语法呢,给同学们这块复制到我们的笔中,那听完这个基本语法,可能有些同学呢,还是有点蒙圈,对不对?不形象吗?不形象那怎么办呢?诶老师给大家看一下Switch的流程图,这个很有意思了。Switch的流流程图,好,来看看Switch的流程图,这个图形呢,就有个好处什么呢,一目了然,好,这个图呢,我已经给大家画好了啊,自己我们自己画的啊,没有用网上的图,我们自己画一个来看的。
06:01
那看一下这个goon Switch流程图是什么样子的?打开lawyer大家看是这样子的,看懂了吗?注意听我讲解啊,注意听我讲解,它是这样子的。首先呢,代码从这里开始执行,看到没有,然后这个地方它会计算一个表达式。大家还记得刚才那个Switch图吧,这个表达式,如果这个表达式。计算出来过后呢,他先跟第一个case,这一幕就是kiss了,啊注意这边就是kiss。如果这个表达式跟case里面的第一个表达式刚才等等就什么样,它也可能有第二个表达式,对吧?我刚才不是画了有吗?这地方我就写只写了一个表达式一后面用等等来描述它们,也可以用逗号隔开,可以用表达式二有个逗号隔开,表达式三等等,如果这个表达式匹配到这里面的值了,它就为真嘛,如果匹配上就为真,为真就执行语句块一执行完了过后直接结束10SWITCH语句,然后呢,继续执行其他代码。
07:00
注意啊,结束十位去。这个Switch结束了过后,下面如果有代码还要继续执行啊,不是退出程序,而是结束Switch这个控制明白吗?大家看这里面没有break。那如果为甲怎么办呢?如果我这个表达式不匹配这里的值为甲,我就去看第二个case。这不是第二个case吗?又跟这里面的表达式进行匹配,如果匹配成功,执行一块二又走。如果这个地方又没有匹配成功怎么办呢?匹配下面的以此类推,这边肯定有很多匹配成功的功能,执行N,如果这个都没有匹配到,匹配到说这个没匹配到,这个也没匹配到,这个还没匹配到怎么办呢?直接执行debt语句块。这个地方呢,就是说最后的一个选择。给你一个最好的机会。给你一个最后的机会,好,那么大家看到执行完了过后,他也结束SWITCH1句。然后退出。所以说从这地方分析呢,我们总结几句话啊,同学们来。
08:01
把刚才老师的这个分析呢。把它放到我们的笔记中,老师把这几句话总结到笔记里边去,注意听讲。啊,为了加深一个印象呢,我对上图做一个总结。好不好,对对。上图的说明和总结能力。总结来吧,我们来看看上面有哪些特点呢?刚才老师其实已经说过了,只是呢在明确的用文字说一下第一个。执行的流程是什么呢?会这样子啊,会这样匹配,就是先先计算出就Switch执行流程。所执行的流程是让计算。计算出就是先。先执行,执行这个表达式。表达式计算出啊,计算其值,得到,得到值。啊,然后和后面case,就是说和后面这个case的值表达式表达式。
09:08
匹配呃,进行进行比较。进行比较。如果,如果相等,如果相等就匹配成功,就匹配到了。匹配到,然后执行执行对应的对应的case。Case的语句块。理解,然后就退出。语句块儿,然后退出。然后退出或者要结束都可以啊,然后退出或者要结束Switch。所以是这个控制结构控制。这是说的第一句话,那么问题是来了,如果它这个表达式跟所有的case表达式都不匹配怎么办呢?注意听,如果,如果这个写错了,Switch单词写错了。如果啊wi如果一个就Switch的啊,注意听Switch。
10:08
Switch的表达式的值没有和任何的case的表达式。表达式匹配成功,匹配成功。注意听成功则则执行deat语句块。Default语句块。就是最后那个语句块,大家回忆一下那个刚才这个图。还记得吧,所以这个都没匹配到,就执行default里面的语句块。OK,然后执行完了过后再退出啊,执行后执行后退出这个Switch。Switch这个控制。制流程啊,控制好,这是第二点。第三点要说的是,在我们的go浪里面,一个case后面的语句块,就是case后面的表达式,可以有多个。
11:00
可以有多个用逗号隔开,注意听,这是一个特点啊,Go浪的case。啊,Case后的表达式。注意听表达式可以有多个,多个使用。是用什么呢,逗号。逗号隔开间隔,明白啊,使用逗号间隔,这是第四点,第三点最后一个大家注意观察到,在勾浪里面呢,Case后面不需要加break,默认就是break,说什么叫break呢?就是case执行完了就走了,看着这个图。就是我把这个语句执行完了就退出这个Switch这个结构,这个图很重要啊,尤其是初学者,一定要看懂,注意听这句话,Goon中goon中的case语句块。语句块。啊,语句。不需要,不需要写什么呢?Break。
12:02
Break,因为默认就有啊,因为因为默认就有默认。默认会有,这个会有。好了,那也也就是说他这个case执行完了过后,在默认情况下就会突出即。我再多说一句啊,即即当程序执行完,执行完一个case语句块后,语句块后。就什么呢,就直接直接默认情况下啊说也在默认情况下,当然有些老师说我不想让他退出,继续往下执行呢,后面再说在这默认情况下,即在默认情况下,默认情况下怎么样,当程序执行完case语句块后,就直接退出该Switch。Switch控制结构。Wis这个控制结构好的好的,各位同学。
13:03
结构啊结构好,关于这个流程图呢,我就先说这么四点,大家看看是不是稍微理解了一点,如果还没有理解,没有关系,下面呢,我们来一个快速入门案例,我们来一个快速入门案例来,我们马上写一段代码,来加深对刚才老师理论上的一个说明,那么我们来实践一把。打开我们的笔记,来一个快速入门案例。Switch快速入门案例,注意听讲。好,快速入门里来一个小的。这一个。这玩意啊,快入案例呢,我们来个标题,呃,来个标题三吧,好不好?来个标题三,结构上更清晰一点,好,这个案例呢,是这样子的,我们已经把这个案例准备好了,来,把这个案例放到笔记里面来。我看一下啊。好吧,我们来一起写一写,也挺简单的,来,走吧。嗯,题的要求非常的简单而又明确,他说请编写一个程序。
14:04
该程序可以接收一个字符。一个字符啊,ABC def FA表示星期一,看这里B。B表示星期二对不对,然后呢,根据用户的输入显示一相相应的啊,这写错了,相应的信息要求Switch,比如说我输一个A就输出星期一,输一个B输出星期二,以此类推,那同学们我们来走代码。直接代码了啊,好的,这是案例的一个要求。我们用一个小的箭头,这是代码的一个编写,我们来一个小箭头来吧,打开我们的这个东西,然后呢,老师在CHAPTER5里面再新建一个文件夹,什么文件夹,大家猜一猜,是不是应该写Switch了。Wi Switch DEMO没问题吧,好,Switch。在这里面呢,我们来写啊,写写案例。
15:01
好,这里面我们写个DEMO1吧,就新建一个文件夹,因为有可能还有新的代码在里边,对不对,DEMO。这个零一。又来了啊。把这个名字改一下,DEMO01快速入门案例。好,这里面呢,我们新建一个文件叫main.go。没点够。好,来我们。我们把这个呃,主体的一个框架呢,先粘一份过来,对吧,先粘一份过来。好,这份儿呢,我就不写了。因为他总是有这些东西好放在这。没问题吧?好,把我们的要求粘过来。刚才呢,我们这儿有一个具体的要求,我们把它放到比放到我们的代码代码这边来,来一个这样的东西。好,整体往这边挪一下来吧,走走一走,首先呢,我们来分析一下这个代码思路分析。分析一下思路。
16:00
好,这个地方我就简单写一下啊,首先呢,应该定义一个变量字符,对吧,定义。一个变量接收接收字符。好,第二个呢,我们使用什么呢?使用Switch来完成。Swi SW。Itch完成好了,那先来定一个变量VAR好不好,VAR,然后呢,我们来一个K,就是代表它输出,我们用BAT,大家都知道字符呢,一般用BAT来接收没问题吧,好,这写完了,然后呢,我们提示他一句话。请它输入一个字符对吧,请输入一个字符,OK,那这个字符呢,是abcde,这里面给我选一个,其他我不认好这地方先不要去管它了。好,然后呢,我们就来接收。对不对,Scan LN这个地方我们要用F啊,用这种方式来接收,然后呢,我告诉他我接收字符对不对,然后呢。
17:02
这个地方用这种方式来接收,我们指定一个格式来接收,大家还记得是不是我们讲过这个函数啊,对不对,然后呢,K好接收完了过后呢,我用Switch。Shwi sh,然后K。比较K,如果它等于了A,对不对?整体往这边挪一下啊,如果它等于了A,好的,那么我们就输出一句话。PR。NT好,然后呢,就是说这是周一。对吧,周一。没问题吧,其他以此类推,这个break不要写了啊,那下面的以此类推。我就快速的粘贴复制一把。B,如果输入的是B,那么就是周二。周二好,如果输入的是C。就是什么呢,就周三。周三。对吧,诶,今天星期一猴子穿新衣,你可以这样写,今天星期二猴子当小二,今天星期三猴子爬雪山,对吧?这是一个很有意思的一个小的小技巧,比如说星期一对吧,猴子有猴子穿新衣。
18:15
心意。穿新的衣服,哎,穿。新一。对不对,今天星期二,今天星期二什么呢?这个猴子当小二,猴子当小二。啊,今天星期三,什么呢?猴子爬雪山。猴子爬。爬雪山。对不对,好,我就开个小玩笑啊,那其他我就不写了,其他我就不写了啊,这个还有什么,呃,什么星期星期四啊,星期星期五啊,就不写了,我直接来一个默认的,就是如果都没有输对的话呢,怎么办呢?看那就是一句话,默认就是输出输入有有误对不对,Default。
19:01
DAULT。好,如果一个都没,一个都没匹配到,我就默认一个字,就是输入有误。输入有误,请重新输入哪里啊。那么注意啊,我这没有没有写其他的大家不要看这面还有这么多DEF,其实就是代码不停的复制嘛,我就没写了,大家大家理解吧,我这没有写了啊好,我们来运行一下,我我们来运行一把,看看代码有没有问题,我先保存。看代码编译有没有毛病。代码编译呢,好像没有什么提示错误啊,如果有错误的话,会有红色的波浪号波浪线来提示我们没有没有任何问题,没有问题的话呢,来我们执行一下。打开这里,我们推到上一级。CDCD到我们新的这个文件夹下边,我们写的是什么呀?我们是Switch。进到这里面,进到这里面呢,我们有个DEMO01对不对,好点,我们来go run,慢点go跑起来。
20:04
他会让我输一个字符对不对,好,那么我就输一个A吧。周一猴子穿新衣来,再来一个。再来一个B。B。周二,猴子当小二。周三我就不测了,我就来一个别的东西,比如说我输了一个PP,现在一个一个都没有匹配上,怎么办呢。苏。大家看到没有,这就是一个很经典的用法,很经典用法,诶,这就是Switch,大家接触的第一个就是按照常规使用的一个案例,其实你会这你学到这里这个地方的时候呢,其实我们Switch Switch在开发里面,百分之八九十的应用场景你都可以处理了,因为它就这么简单,它并不难明白吗?但是如果我们只讲这么一点东西呢,显然。这个档次太低了,别人问到细节呢,你可能就答不上来,因因此呢,我们马上就要开始讲细节讨论,这个细节呢,我大概总结了将近十多点,对不对?好,那现在呢,我们快速入门和基本使用,先给同学们介绍到这里。
21:15
后面呢,我们再讲他的细节。
我来说两句