00:00
那下面呢,我们来看一下流程控制里面的跳转控制语句叫break,我们一直在提break,但是呢,一直没有系统的给大家讲解一下break,对吧?现在呢,我给大家系统的介绍一下break这个控制语句,首先呢,我们先来看一个需求,就说这个break语句。到底有什么用?还是有一个需求引起大家的思考?那么这个需求是这样子的,同学们什么呢?大家看随机要求大家随机生成一到100的一个数,直到生成了99这个数为止,看看你一共用用了多少次。这这道题。这道题其实大家想一想,你如果让你来实现,你会怎么做呢?那你来实现怎么做?其实这道这道题最好的一种方案就是写一个。无限循环。
01:01
然后呢,当我生成了99的时候,我就看一共生成,一共随机的生成了多少个数。生成了多少次,然后break就完了是吧,也也就是说这个地方的逻辑他应该怎么比较合理呢。是不是这样子的,就是说如果我们来分析这个思路的话,最好是这样实现,就是编写,编写一个无限循环。循环控制,然后随机,然后不停的。不停的随机生成数,生成这个数。生成一个数。当生成。当深沉了。生成了99时。就退出就退出这个无限循环。就退出无限循环是不是?诶同学们想一想。这种逻辑其实是最合理的一种逻辑了,但是大家有看到,因为我这写了无限循环控制。
02:06
那无限循环控制要退出来或者叫跳出来就会。就会有退出,退出的时候这个地方就会用到一种语句,那么就说怎么退出这个无限循环呢?这里就引出了我们要讲的break。Break就这么来的,能理解吧,待会呢,我们要实现这个代码啊,同学们,待会呢,我们学完这个break过后,我就把这个break给你们写一遍,你们看一下来吧。那么现在呢,有了这个需求,我们就想就给大家快速的实现一下,让大家体验一下这个break语句的好处,然后我们再详细的为大家介绍break语句的语法,以及break的流程控制好不好,好我们来看一下,那我现在就趁热打铁,根据这个需求呢。让大家快速的体验一下break语句的使用。我们一边讲呢,仍然是一边做笔记好的。
03:00
往这儿来,没了。然后现在我们讲的是什么内容,我们来看啊,诶我们找到它了。这是要讲的跳转控制语句,Break。给他一个标题二。给他一个标题二。诶,点一下。标题二,然后呢,我们看一个具体的需求。需求引出,引出什么呢?引出break语句。好,我们刚才已经提出这个需求了。给他一个标题三。那么看一下刚才的需求是如此这般的。对吧,如此这般的看一个。需求是这样子的,而且呢,我也简单的分析了一下,就是怎么去完成。那这里呢,嗯,有一个问题,就是生成随机数,生成随机的,生成一个数叫随生成随机数啊,就是不停的随机生成数,这个时候怎么办呢?就是随机生成一个一到100的这么一个方式,怎么做呢?我要有一些前提。
04:11
就是我要给他提示使用什么技术,这里我们需要做一个技术的支持。这里我们给大家。大家说一下,说一下如何随机生成随机。随机生成一到100的这个整数。怎么怎么生成呢?大家看我这里,我这个幻灯片里面,我做了一个说明,看这里在购中需要生成一个随机的种子,额,呃,种子,然后呢,嗯,用的是RA包里面的in nin。这个这个方这个方法来完成的,好,那我给大家演示一下吧。口说无凭,我们来演示一下,看一下代码,我直接给他写代码啊,来打开这里还是老规矩,因为这是一个break,所以说呢,我们新建一个文件夹。
05:07
新建一个文件夹,叫break DEMO。跟思路。跟上思路,然后呢,我在这里建一个新的文件,叫main.go。好,写上我们前面的这段代码,Package。然后然后呢,我们import一下for my。然后来一个主函数。好,现在给大家看一下如何随机啊,随机的生成,生成一到100的这个整数。那这里面有一个方法,同学们先看一下在我们的这个文档手册,我们大家看一下文档。在这个文档里面呢,有一个run。Ma包下面啊,是一个ma run包,注意这个包就是相当于是ma下面的red包,这又是个包,不是ma包,是Mo ma下面的另外一个包,这才是一个包啊,这个包呢,里面有一个方法。
06:11
这个方法我带大家看一下,叫init TN,看一下这个方法是干什么的,返回一个曲子,在零到。N的一个尾随机数,也就是说,也就是说它是大于等于零小于N的一个数,是不是,所以说我们来看一下是不是这样子的呢。那就是ran,点什么呢,Inn?看清楚,这个时候我写个100。那就说这个时候会生成一个。零。到100的一个数,但是很遗憾它没有,它没有包括它没有包括100,那怎么办呢?简单咱们加一个一不就完了吗?对不对,所以这就是一个随机数,我把它收接收一下啊,我把它接收一下,比如说这个N。我们把它输出来给大家看一下。
07:00
来吧,然后呢,我输出这个值N。来,我们跑一跑,打开我们这个地方来点点。然后CD到刚才我们写的文件夹,CD到刚才写的叫什么呀?我们写了一个叫break。对不对,DR,然后呢,我们直接。Go run一下。跑一个,你看这个时候呢,诶,我们看它告诉我们red没有,为什么没有引包,怎么引这个包呢?非常的简单,来吧,我们把包引一下。注意这个时候引包啊,应该怎么引,大家看在我们的文档里面写的很清楚,它是在mass下面的run包,因此你引的时候呢,应该这样引才对,M。然后呢?这样才才引进去了啊,不能只一个mass包。跑一跑。
08:00
我们发现这个时候就会返回一个字82。但是很遗憾你会发现啊,它始终返回一个稳定的82,为什么呢?因为它是一个尾随基数,所以说我们在这之前呢,还要做一个工作,就是给RA呢生成一个随机的种子,听这句话。我们为了。为了生成,生成一个随机数。随机数还需要,还需要生成。生成设置一个种子给什么呢?给round设置,设置一个种子。如果你这个种子没有没有设置的话啊,它永远是稳定的数,怎么写,我直接写代码。Ran下面有个叫said。那我直接写代码了啊,我用time有一个方法,Time下面有一个方法叫no。那么待会儿我们再解释一下,写完再说unix。
09:00
洗完洗完过后,我再要引入一个包,叫碳包。待会再解释下面是什么话啊,跑一个先看效果。抛弃了再说。你看这个时候产生74,再下一个33,随机数已经生成了。随机数已经生成了,那我来解释一下,同学们,我来解释一下这句话是什么意思,首先我们看这里,看这。这句话是什么意思呢?听我讲这句话是调用time下面的一个no。方法,然后再调用啊,Not,它的一个函数,再调用它的unix,这个方法会返回什么?我们来看手册,它会返回一个这样的数。它会返回。返回。一个描述返回一个。从1970年。林月。零日啊,就是1970年这个1月1日啊,应该是一月。
10:05
1月1日。1970年的一月。一是。00:00:00的这个00:00零时。啊,00:00:00。秒到现在的到现在。的一个描述能理解吗?就是它会返回,就是从1970年开始算到现在的一个描述,那何以为证呢?我们来看一下手册。手册里面写的非常的清楚。来看在。我们的time包里边找到time。往下走。介绍老师思路啊,碳包。Time他们下面呢,有一个先有一个函数叫做now。我们找一下这个它的函数。No。诶,我们找一下它的函数啊,Time我再找一找time下面。
11:04
好,在这找到了,看,这是一个函数,不是方法。这个函数它是now now返回当前本地时间,但是它返回的是什么呢?它返回的类型是个time。而这个time呢,大家看这个类型time呢,它又它又有一个有一个方法绑定的一个方法,这个方法叫unix。这个unix是干什么的?看啊,Unix表示为unix时间,即从时间点是1970年的1月1日00:00:00到现在的一个秒数,就这么回事来的。后面呢,我们还会专门讲有关时间和日期的函数,还会提到这一个unx时间,OK,好,那就意味着这个值是随机的。同学们可以打印出来看一下它,它每次都不一样,我给大家看一下我。F。
12:00
F mt.print点大家看一下。你们你们看一下当前的描述啊,我我一执行你们就看到效果了,走往下看。你看。这就是1970年1月一一月一日一呃,1月1日00:00的秒,到现在的一个描述,再一执行,又变了。大家看。是不是又变了再走?是不是又变了?它始终是在变化的,就是在不停的,呃,因为你时间在走嘛,所以它这个就变化,因此我这个种子呢,就是变化的这个一旦变化,随机生成的这个值就会变化,能理解吧,好,这个呢,我就说到这里。好,那既然解释完这个东西以后呢,我们就可以来写我们的代码了,因为我已经可以随机生成一个一到100的一个人数,好,根据刚才老师的这么一个按要求,或者说我们这段代码的要求是随机生成这么一次,它生成多少次来我们。
13:00
那么刚才老师已经分析了实现的思路,我的思路是怎么样子的呀,大家看老师刚才的思路这样子的。对不对。我的思路是这样子。编写一个。编写一个无限循环的控制,不停的随随生成这个随机数,当生成了99时,就退出无限循环,同时我把这个次数记录下来,那很好办啊,大家想一想应该怎么写?一个无限循环,是不是for就可以搞定了?负就搞定了,好,我生成一个随机数。随机数,把这一段代码拿进来。这个没问题吧,把这个拿进来。这段代码是干什么我就不解释了,刚才已经解释的非常清楚,对不对?好,我把这个呢先注销掉。刚才是不是已经把这个前面的知识点的铺垫已经给他说清楚了,没问题吧,现在呢,我们已经用到它了,现在就可以来判断,如果N等于99,说明它生成了,此时此刻我就break。
14:02
退出,但是我退出之前呢,我要算出来一共用了多少次,因此呢,我得有一个变量来记录它,比如说count一下。Int默认为零,那我生成了一次,我就把它加加。对不对,它原先是零生成了一次加加加加完了过后再A,对不起,这两个都是N的话,那我加的是countt,这这是countt才对,对不对,那就说我我生成了一次,我就CTRL加加,再生成一次,再加加,当他发现等于99就退出count呢,刚好就是次数好,那我输出来。Print。PT,那我就写一下喽,我说一共生成生成99,一共用了,一共使用了多少次呢?好把这个次数打出来,Count。对不对,用了这么多次。好,那现在呢,我们来运行一下,看看能否得到这个结果。
15:02
大家看这里面是什么意思,这个break表示什么意思?这个break就是表示跳出。跳出这个for循环,For无限循环。这个for循环。好,OK,大家看懂了没有,那我们来跑一下,如果你是没有break,它永远不出来,它一定是个死循环啊,来跑一跑。跑起来看效果。好,你看它还是深沉。就一直在生产。好,那我看看他一直没出来,说明我的代码可能是个死循环,真的没有生成退出来看一下效果。N等于99,应该是可以的呀。啊,我生成了一个随机数,然后呢100加。看到加加N等于99就跳出来,应该不是是循环,为什么这么慢呢?这样子我们把这个N随机的也打印出来一次好不好。看看它是不是在不停的生成。嗯,等于。
16:01
好,我们输出一下。那么这次生成一次就打一次,然后再看什么时候生成99,同时看到佳佳呢,也在不停的计算对不对,跑一个。不停生产。你看它这个还是不够随机。还是不够随机。还是不够随机,因为它这个秒数啊,变化还是有一点,因为它这个秒嘛,这个种子一秒一秒还是比较慢,我们还得重新设置一下。你看还是没有生成99。因为随机数还是不够细致啊,总之还是不够细致。还在跑?还没生成,你看你看这地方生成随机书的时候,会有很多说明这个种子设计的不合理,那怎么办呢?我们还得想个别的招。看能不能生成99啊。看还没生成99。哦,这个还是不行。
17:01
好不行,没关系,我们呢,重新来生成它的这个微秒数就可以了。好,我来重新把它停掉,我们重新来做一下,生成一个微秒数就可以搞定。好同学,我们来看一下啊,嗯,大家有没有注意到这个生成unix呢?它返回的是什么呀?大家看它返回的是秒数,那么下面有一个unique是纳秒,诶纳秒,这个就是纳秒,纳秒可就厉害了,它是比如说秒下面有个毫秒,毫秒下面才是纳秒,所以说如果我用纳秒来说的话,这个随机就应该。更加的准确,就是因为它这个种子更随机了嘛。好,这样子应该就没问题了,我生成纳秒应该更准确,这样子再一次行,看一下啊,很快就能得到走。你看这个散的就很厉害了,往下走看,诶你看一下就生成了,看到没有,因为我那个种子,我那个种子纳秒纳秒,你想一想,一秒里面,一秒里面就会变,变1000乘1000次,这个就很大了,所以说它的种子,它的种子就非常随机,那你生成的这个随机数呢,它分布的就它的它的散,它这个就就会每一次生成的就都不一样了,明白我的意思吧,你看生成九十九一共用了42次,再来一次。
18:18
看哪次运气好啊,哎,你看这个很蠢吧,是第四次就生成99了,再来一次。诶,你看这个100次好可以了,大家看一下这个效果就行,大家注意以后你们再要生成随机数的时候呢,可以用这个小知识点好不好,我把这个题给大家放到笔记里面来,这就是我们提出了break语句的需求,以及一个快速入门案例。快速入门案例我写了啊,然后这写break的。的快速。快速。入门案例对不对?我们写了一个快速入门案例,大家基本上也能体会到break语句的一个特点。
19:03
我把这段代码呢给同学们放到笔记里面来。好,我进去一下。第八行到30行。第八行到30行我放到这。没问题吧?收一收,然后呢,从31行开始继续截取,把后面代码全部截完31行。诶,31行到最后那就没啥了。最后就是两句话。放这就可以。对不对,好整理一下。好,同学们,那关于我们所说的break的这个语句的。他的为什么需要它以及一个快速入门呢?我们就给大家先介绍到这里。
我来说两句