00:00
啊,同学们好,下面呢,我们接着来讲goon语句的最后一个控制。跳转控制语句go啊,GoTo Goto,那首先我们来看一下goto是什么啊,同学们听这个名字大家能猜出来是什么吧,Goto就是跳转到哪里去到哪里去的意思,那么goto这个语句呢,其实用的最多的还是像在汇编语言里面用的比较多,像这种高级语言里面呢,Goto这种语法呀,呃,用的比较少,呃,为什么这么说呢?我们先来看一下goto,呃,这个语言的一个基本介绍,大家看。Go语言里面呢,Goto语句可以无条件的转移到程序中指定的行,那就意味着说它可以乱跳,就你只要给他一个标签,你就可以可以指定跳转到某个地位地方去,所以这是它的第一个特点。第二个呢,大家注意一下goto语句通常与条件。条件以及配合使用,用来实现条件的转移、跳出循环体等功能。
01:01
等功能,也就是他一般和IF1句配合,但是注意看这里啊,在勾构程序设计中,我们的设计者呢,包括我们本身这种开发开发的程序员啊,一般都不太主张使用goto语句,呃,甚至有一段时间同学们,嗯,有些有些,如果你是在听视频的,曾经有过。这种开发经验的就知道,曾经有一段时间呢,在这个行业里面就说goto语句是一种不好的设计,因此呢,有些语言就直接不让不让用goto了。不让用goto了,后边后边人们发现呢,其实goto语句本身并没有错,而是使用者的问题,因此呢,有些这种高级语言又恢复了goto,比如像Java,它也是支持goto的,所以说不是语言本身的问题,而是人的问题,所以说呢,就是又恢复这种构图,包括构语言也是支持goto的,但是。但是呢,很多程序员,包括一些设计啊,设计语言的专家也认为尽量呢避免使用goto,呃,不是说不能用,就是说尽量避免使用使使用构O,为什么呢?因为goto语语句容易造成程序的流程的混乱,使理解和调试程序产生困难,所以说我在这里讲这个构图语句呢,主要是要告诉大家,构语言是支持构图的,这是第一点要跟大家讲。
02:20
第二点呢,我们要告诉大家,Goto它可以实现条件转移,跳出循环,就是说你只要给他一个标签,它就可以到指定位置,这是第二点我要说的,第三点呢,我建议大家能不用goto就不用goto了,理解明白这意思吧,至少呢。我们讲完这个goto之后,面试官问你go语言里面可不可用goto,你不要说你不要开黄腔,对不对,你说诶根本就不支持,这就错了,支还是支持的,支持还是支持,但是呢,你话锋一转,你告诉这个面试官说我们尽量不要用goto啊,除非迫不得已可以用一下,但一般情况下就不要用构图了,因为goto呢,容易造成程序流程的混乱,OK,那就是这就是goto的一个基本介绍,基本介绍好,这是三点,大家有一个认识啊,有一个认识啊,第三第二下面这一点呢,我们来看一下goto的基本语法啊,Goto的基本语法,大家看到在这里goTo Goto的基本语法,OK。
03:15
看一下构图,基本语法是这样子的,你给一个label,当然这个label大家看到是你自定义的,也就是说你只要满足标识符的定义规则,你就可以写,那么后面有个冒号goto就说。当我们的程序执行到goto的时候,他发现你后面跟了一个label,就是一个标签,他就会跳过这个点点点的代码,就说这里这边的代码它就不执行了。就这块儿的代码它就不执行了,不管你的代码有多少,不执行了,他直接就从就从这一行,就从goto这一行,直接就跳转到这个位置开始执行。能理解吗?就他构图就这意思,就是跳转,那么它的一个流程图呢,也比较简单,是这样子的代码从这里开始执行。
04:02
执行到STATEMENT1,假设执行到STATEMENT1,在这个STATEMENT1这一块代码块里面,你有一个goto语句,比如说你这有个goto label3,他看啊,我这地方写了一个LABEL1 label2 label3,如果说你这写了一个goto label label3,那么整个代码就直接从这里到这来了。那也就是说这边的代码就怎么样,就不执行了,理解OK其实并不难,对不对,它就是跳转到哪里,跳转到哪里OK,那么我们把这个goto的基本介绍和基本语法就给大家说完了,下边呢,我们就举个例子来,我们先把笔记给大家补一补,把笔记补完了过后呢,我们就开始举例说明好不好。来吧,走走一个,下面讲是goTo Goto语句跳转控制语句goto。来用一用。那还是老规矩,这边呢,我给他一个标题二啊,给他一个标题二。
05:02
对吧,刚才呢,我们对goto做了一个基本介绍,Goto。Got to。Goto基本介绍。OK,那给他一个标题三这个。然后呢,我们又做了什么呢?我们做了goto的基本语法。Goto。基本语法。OK。把它放在这里,我们来给它一个标题三还是标题三。好,那么基基本介绍,刚才老师总结了有这么对不对,三点大家要有一个认识。三点我们把它板书一下。在大家板书的时候,老师老师板书的时候其实有目的就是让大家有一个听课的时候有个缓冲,这里面我再强调一点啊,在勾浪勾浪程序设计中,一般不主张使用构图语句理解,那么原因呢?刚才老师其实已经给大家做了解释。啊,我把它标起来,一般不主张使用goto,原因就是容易造成程序混乱,OK。
06:03
那是这是goto基本介绍,它的goto的基本语法,Goto的基本语法呢,是这样子的,大家看到这里。对不对?这就是goto的基本语法。其实非常的简单,非常简单,然后呢,这边有一个对应的流程图,我们也把它写作goto的流程图。它流程图非常非常简单,就是一个goto关键字,然后呢,指定一个什么呀。他就指定一个构图的标签,就可以来看这里这个图好,我把这个图拿过来。非常简单对吧,并不难,那下面呢,呃,有了这样前面的这三点知识基础之后呢,我们来一个快速入门案例。好的,我们来走一个案例吧。做一个案例,那现在呢,我们来写一段代码来说明一下goto的使用,那老规矩,我们在CHAPTER05里边呢,新建一个文件夹,我们叫goto DEMO。
07:01
OK,然后在这个文件夹里边呢,我们新建一个文件叫main.go。OK,老规矩,我们来写一个package。Me?然后呢,咱们来import对不对,我们引入format包,然后function。没。这是我们的主函数,也是程序的入口。好,我们来演示一下goto的使用,演示演示goto的使用。Goto的使用。好,那构的使用呢,我们就写一段代码,大家看一看就可以了,比如说同学们看我这里,我这里有很多的输出语句。OK print,比如说有个OK1好,下面呢,我疯狂的复制。好的,这是OK2。这是OK3,这是OK4,这是OK5,这是OK6 ok7好OK,那现在呢,假如我我在这个OK5这块,当然就说假设我们不不不加控制,是不是,是不是他就从OK1一直执行到OK7,这个没问题吧。
08:09
那假如我在OK5这个地方,我加了一个label。LALA啊a label,比如说这个我也我也写个别的名字叫ABC也可以,对吧,啊ABC也行。这个名字呢,就说是根据你的需要,你来你来设置的,假设叫ABC,当然一般情况下我们会写label LA啊。Able,那这个地方呢,假设我在,呃,这个OK,后面呢,我写了一个语叫goto,哪里呢,Label。Label e a AB,我看这个label单词有没有写错啊?看一下。AAB啊E单词写错了。
09:04
好,Label是这样写的,不要写反了啊,咱们尽量不要写错误的单词在这。好,Label,那这样子会出现一个什么情况呢?同学们告诉大家,当我们的代码执行到这一行的时候啊,执行到这个goto label1的时候,那么这里面的代就是这三句代码就会被跳过,就不执行了,他直接从这里一下就跳转到这里开始执行。也就跳到label下面这一局开始执行,那么我们来看看是不是这样子的,OK,保存一下,看代码有没有错误啊,看代码没有错误,代码没有毛病,没有毛病呢,我们来运行一下。CD到我们刚才写的就是goto DEMO,然后呢,Go run对不对面点go跑起来。我们看代码的执行效果。我们发现OK1执行了过后,直接就是OK舞,为什么?因为他直接就跳,跳了这么几句啊,跳了直接就从那跳了,直接就跳了啊,就这么一个意思。
10:04
好,那看它还有一个警告,看到没有unreable code,它是意思就是说这这下面代码是执行不了的,但是有可能就是因为你有一个goto语句,一般情况下是有一个if语句的,就是if怎么怎么样,再goto明白我意思吧,打个比方吗?比如说我们这里面有个变量N。Int等于十,一般会跟if配合使用,若N大于20。在大于20的情况下,我们再去执行这个goto语句,这样呢,诶它就是这样一种逻辑,看下面,下面这样写完了过后就没问题了,为什么?因为goto它不是一般来说不会说没有条件就去执行一个goto,对不对,往往是有一个条件来做的,比如这样一个情况下,你给了一个N等于十,那当然这就不用goto了。因为他不满足这个条件,不进到这个if语句,那当然就不会goto,那就是按正常流行,正常流程执行就行了,大家看。
11:04
是吧,还是1234567正常执行,但是呢,如果说你在输入的时候,你这个N是输入了30,那30大于20,这个时候它会执行goto,这个时候这三句话就会被跳过,所以说我刚才讲过,Goto一般来讲会跟if语句配合使用,因为你不可无,你不可能是无缘无故的就构图到一个label里面去,对不对,所以说你看加了这样子,诶这样子goto它就生效。大家看一下,OK,好,那关于goto的一个基本演示呢,我们就介绍到这里,我把这段快速入门案例给同学们放到笔记里面去构图,语句还是比较简单的,同学们啊,所以说我就说到这儿。来吧,我们把它放在我们的笔记里面去。OK。好,放完。这个goto我们就介绍完了,呃,我也不想做过多的介绍,因为他本身也不难。最后一句话啊,同学们一定记住老师这样一句话,就尽量避免使用构图,除非迫不得已。
12:06
那这个讲完了过后呢,我们再来讲最后一个控跳转控制语句叫什么呢?叫做return。注意return呢,在这里我不想过多的,不想介绍太多,为什么呢?注意听return使用的使用在方法里面。啊,使用在方法或者函数中表示,它是会,它一般会使用在方法或者函数中。或者函数,函数中它表示什么呢?表示跳出所在的函数啊,这样我就对应了表示跳出所在的方法或者函数。那么关于这个return的详细的介绍呢,我是准备放在函数的时候详细介绍这里呢,我就先提一下,为什么呢?因为return它毕竟也是用来控制这种流程的,所以说放在这里说一下呢比较合适,但是return它一般会使用在哪里呢?就是它是使用在哪里啊,不是一般它是使用在函数的,它表示什么呢?它表示跳出。
13:11
或者叫结束所在的方法或函数,一看一个简单的例子啊,看一个简单的例子,比如说同学们看我这写的一段代码,这段代码呢,非常简单,非常简单在命。这一个函数里边我们有一个for循环,For循环里面我做了一个判断,如果I等于三,我就return,那么这个return表示什么意思呢?表示什么意思?这个return就是表示结束或者结束,或者跳出这个may。Main函数,那相当于说是结束这个程序了,就说如果你这个return是放在main main这个函数的,那就表示整个程序结束,如果你是放在别的函数的,比如说你这有个ABC,当然我现在还没讲函数啊,马上就会讲了,这ABC这个函数我简单四个一。在这个函数里边,你有一个return。
14:02
在这个函数里面,你有一个return,那么这个return表示什么意思呢?就是表示跳出这个ABC这个函数。啊,也就或者说叫做跳出这个ABC函数,下面的代码就不执行了,下面代码我不管什么代码我都不执行,能理解吧。他跟那个break和还是不一样的,就是说如果你是break和break是终止这个for循环。你是continue,是终止本次循环,继续下次循环,但它就很彻底了,就是你相当于说下面下面不管你下面还有什么代码,不管你有什么代码,我通通都不执行了。而我们的break是只是break是只是停止后面循环体的代码,但是break是下面所有的代码都不执行了,理解吧,也就是说我们可以认为return比比前面那两种控制语句跳转的终止的更彻底啊,里面代码再有什么都不执行的,好,这就return。那关于return的详细介绍呢,我会放在函数里面,还会提这个return,还会反还会,至少还会拿十十分钟到20分钟来给家讲一下这个return,所以这里呢,我就把它呃简单给大家说一下就行。
15:16
OK,好,这是我们的控制跳转语句的一个简单的一个接触和介绍。好了,我把它放在这里来。OK,这里呢,我给他一个标题。标题二。给他一个标题二,然后呢,这里做了基本介绍。基本介绍,我们把它放在这就行了。OK。我把它放在这里。对吧,基本介绍来一个标题三。标题声,然后呢,这儿有一个简单的案例。这个简单案例,我也把它拿到笔记里面来。好的。好,对上面的说明啊,对上面说明我就说了。
16:00
好,我简单说一说明一下,说明两点啊,第一点呢。第一点。第一点就是呃,Return就是如果。如果return。RETURN4。是在。是在普通的函数,普通的函数啊函数则表示,则表示什么呢?表示跳出。跳出该函数。该函数即啊即不再执行,不再执行执行函数的执行,不再执行。函数。函数中后面的代码,Return后的代码就说。不再执行函数中return后面的代码。后面的代码。后面的代码。你也可以理解成就是终止该函数,你也可以啊也可以,也可以理解成理解成终止终止函数。
17:03
就返回了,但是如果是放在main函数里面的就更彻底了啊,如果return。Return。是在哪里,是在这个main函函数,那只表示什么呢?表示退出这个程序了,这个程序都退出,因为大家都知道main函数是入口嘛,你如果说把main函数都退出了,那相当于说终止整个这个程序了,对不对,表示什么呢?终止。终止命函数,也就是说,也就是说,也就是。也。就是说终止程序了,就程序就退出了,终止程序。终止程序啊,OK,大家明白这意思,那你可以简单试一下,你可以简单试一下,我简单试一下啊,这个我不多说了,打个比方,同学们看。如果我在这里,我在这里把这个goto换了啊,比如说。原先这个goto是不是下面还可以继续执行呢?如果我这直接写了一个这样的代码。
18:04
我把我把这个稍微改一下啊,这样子啊,嗯,这个源代码我也给他保留。保留,那么现在呢,我把它复制一份好不好,然后呢,我把上面的代码先注销。先注销,然后我演示一下的使用。那如果说我在这里写的是。下面这个label我也不要了,那这个时候大家想一想会出现什么情况呢?就是下面所有的代码通通都不会在执行。为什么?因为呃,我刚才讲过,如果你是在放在这个命函数里边的,相当于说整个程序都退出了,也就是说他会如果听到这个return,那么OK,一输出以后,下面所有所有的代码都不会再执行。啊,所有的代码都不会在执行,相当于终止程序了,好OK,因为你是放在main函数的,Main函数都退出了,那显然程序就怎么样就退出了,来吧,执行一把。
19:00
来跑一个,大家看效果。同学们可以看到。诶,你看这里。他。哦,不好意思啊,我上面没有没有。这个把上面这个注释掉,OK,来再跑一下。你看下面代码啊。你看这里我们是不是输出一个OK1就什么都没有了,下面所有的所有的代码都不会再执行啊,所有代码都不执行,好意思意思就可以了,同学们,那关于这个小案例呢,我们就关于这个return,简单的就说到这儿,还有说啊,讲函数的时候,再讲函数的时候哦,我们还会详细的给大家再说,再再谈一下他的细节。好的,同学们,关于goto和return,我们就给大家介绍到这里。
我来说两句