00:00
大家好,我们接着为大家讲解go语言核心编程里边的数组这个章节,好,同样我们打开。Bisco。打开Vs code,然后呢,我们把这个幻灯片定位到上一次咱们讲解的位置,上一次呢,咱们已经讲到了数组在使用的时候需要注意的事项,还有一些细节,对不对?那现在呢,我们学,我们掌握这些细节过后呢,我们需要来做一些数组的应用案例,加深大家对go语言里边的数组的一个应用,那这里呢,我这里有三个题,大家一起来看一看。我们来看第一个题,他说啊,他说创建。他说创建一个BAT类型的26个元素的数组,这个意思能理解吗?说白了就是创建一个数组,它可以存放BAT类型,这个数组的大小是多少呢?26能理解,然后呢,要求分别放置大A到大Z这26个英文字母,使用for循环访问所有元素并打印。
01:12
要求呢,他这里给了一个提示,大家有没有发现他说数字字符的数据运算是按照这个,呃字母,就比如说我要得到AB字母,那我是A加一就可以了,这里呢,运用了我们的这个字符可以参与运算的这个特性,那也就是说别人在放置的时候呢。你不能傻乎乎的对吧,你是说一个一个的放,那样太慢了,人家要求用for循环来放置,而且呢,要求用for循环来打印,能理解吗?好,那么我们来做第一个题。大家同学们好,我把这几个呢,都都先拿到我们笔记里面来,OK,好,我们这里写上数组。数组的应用案例。应用按。
02:03
要稍等一下有点卡。应用案例。有还在备份啊好应用案例,那么我这里呢,给他一个标题二。看到来个标题二,好,刚才呢,我们已经把这些案例给大家准备好了,对不对?我们就一起来做,只有通过做题才能真正把语法掌握清楚,掌握明白,好,我们来看第一个,嗯,这个题的要求呢,其实提议非常的明确。也并不难,我们打开Miss code,好的,打开过后呢,我们找到上一次的CHAPTER07,那这个时候就是练习了嘛,对吧,所以说呢,我在这儿新建一个文件夹叫。A,对吧?EXERCIC。
03:02
EXERC。好的,我们来一起来做一下这个题。好,我们新建一个文件。命顶购。Main点够,这是我们第一个练习对不对?好,把题呢先放到这里,我们先打一个包包,Package。Mate。然后呢,我们引入,待会要format这个包,要用到format包,然后打一个主函数。好,我们把提议要求先放到这里,大家看提的要求其实挺明确的,对不对?我先把这里关闭一下。然后呢,我们来看一下这个题怎么做,那我们先来分析一下这个思路好不好,思路这样子分析挺简单的,从这个地方这句话呢,我们可以得出我们应该定义,是不是我们应该声明,或者定义都可以我们声明。
04:03
声明一个数组,这个数组应该是这样子的。VR什么呀,比如说我们就叫my char,没问题吧,然后这个数组的大小呢,是26,类型是什么?BY完事,这是第一个,第二个呢,我们使用for循环,For循环。循环,然后利用什么呢?利用这个字符可以进行进行运算的特点,运算的特点来赋值。来复制。你不要说一个一个的付啊,就是利用这个特点。来吧,好用了这个第三步,我们用for循环把它打印出来就行了,然后使用for循环打印即可。好,完事,那现在同学们跟着老师思路,我们来完成这段代码,首先我们按照刚才分析的思路来走一下,现在我们走代码,代码很简单,这样一做,所以说我们做任何事情,思路是第一位的,如果思路不清晰,那你写代码肯定必然要出问题,对吧?好,现在用for循环来做,首先我定义一个I。
05:15
从零开始吧,I小于多少呢?26。I,加加是不是,然后呢,我就开始往里面放东西了,怎么放,同学们怎么放,那很简单嘛,就是my chance。下边为I的时候,等于A字母加上什么呢?加上这个I就行了,对不对?那么加上这个I这样写就行,但这样写呢?你们你们待会会发现这有个小问题,我先卖个关子啊,我先故意写个问号,大家想我这样运算行不行?你们先思考好不好,我们现在一保存马上发现报错了。当我们一保存的时候,我们可以看到这里出现了红色的波浪线,为什么?大家想一想,因为你这个类型它在进行运算的时候,它是int类型,而你I的类型是什么类型?哦,这个啊,注意听不是这样子的啊,看这他说又是一个A加I type int,但是有一个类型是bitt,谁是BAT?
06:17
Bad。哪个地方是bitt,他把他意思就是说你把这一个I,这个是一个bit类型,对不对,它它相当于运算的时候,它把它当成一个bitt的,而你呢,这个是什么类型,你这个地方是一个int类型,所以说类型不匹配,需要怎么样转一下能理解。这个我们以前讲过告语言,它是强制数据类型的,那也就是说你的数据类型不匹配,它是不能够进行运算,所以说你把这一把它转,把这个I,把这个int转成BAT,再一保存,OK了,大家看代码没毛病。好,这样子做完了以后以后呢,他还报告我们format没有用,因为我没输出好,我们来输出一下,输出很简单,用for循环输出,老规矩,我偷个懒,我从上面粘贴拷不下来,我输出了啊。
07:08
我这里说一下注意需要将什么呀,I转成bad类型能理解,然后呢,我们输出一下print f,那我在输出的时候呢,为了好看,我就这样写的啊,我就直接我就直接输出就行了,用C这个字符用C来输出啊同学们,因为你是按照按照字符来输出的,所以说这个格式化呢,会写成百分号C,这样才是按照字符输出能理解好的,下边呢,我们写上MY。Char。理解好,走到这里。那为了好看呢,我这张打一个空格好不好好这样就写完了,这张代码就写完了,还是比较简单,来我们运行一把,打开我们的CHAPTER07里面有一个exercise,然后呢,我。
08:00
输入什么呀,CMD。定位到这个位置,然后go,怎么样run OK。打印输出面点勾走,我们可以看到此时此刻输出的信息是是不是我们要的信息,大家看。没问题吧,这个地方就是我们for循环,就是我们数组的一个应用,大家看一下好,第一个题我们就怎么样做完了。非常的简单。好,我把这个题的分析还有代码呢给同学们放一下。板述一下。来,走到我们这个地方来,把板书放下O了。好,这是第一个题,那么我们来看第二个题,同学们看第二个题。第二题呢,它的要求也是非常简单的,他这样子的,他说请求出一个数组的最大值。并得到对应的下标,能理解什么意思吗?就说给一个数组给你,然后呢,我要求把这个数组的最大值导出来,并且把这个最大值对应的下标给我找出来,没问题来老规矩,思路,万事都要从思路开始,第一步我当然你首先得有个数组了,是吧?你先声明一个数组。
09:18
你你要做这个东西,你肯定要声明一个数组嘛,声明一个数组好,这个数组呢,假设我们就叫INCH2,好吧,待会呢,我们就这样声明一个好,这假设我们有四个数组,直接啊有五个元素,然后直接这样子先初始化一下,比如说我这个数字一。负一九。九,然后90好,再来一个,最后一个啊,再来一个就是11。大家看到这面最大值是90,但是这是你人看到的计算机不知道对吧,那么我们看怎么做呢?第二步,第二步我们假定注意的话,思路啊,假定假定谁。第一个元素第一个元素。
10:01
就是最大值。我假假定啊,假定第一个元素就是最大值,那下标是几呢?下标。下标。下标就是零嘛,就是零,这是我假定的,然后第三步,我让假定的这个元素最大值分别和后面的数据相比较,如果发现,如果发现有比他大的,我就交换,能能理解是吧,就说然后呢,然后。然后从第二个数。第二个元素开始循环比较。循环比较。如果发现有更大的。更大的数则交换。则交换啊,则交换这个最大值好了,那也就是说你认为第一个是最大,但不一定是最大的,但是他也有可能是最大的,那我怎么办呢?我就让他跟第二个元素开始循环比较,如果发现有更大的就交换,思路非常清晰来写代码,首先定义数组这块。
11:06
先拿过来,没问题吧,开始。把第一个元素当成最大值,那我定个变量max没问题吧?各位同学,最大值假定我们认为是第一个元素,那就是int。零。能能理解吧,那假定那这个最大值的。这个最大值的下标。是不是,那么现在最大值,最大值下标肯定就是零嘛,这个能理解吗?肯定嘛,你你不是最大值,它是第一个元素,那下标就是零嘛,但是实际上你这样认定的不一定,就你认为它是最大值,但是不一定是最大值,怎么办呢?For循环从哪里开始比较,从第二个元素,也就是下边唯一的元素开始比较I小于多少嫩。把这个数组的大小给我搞出来,然后I加加。
12:01
如果我发现就是这样写的。如果发现有最大的。就开始交换。好,写一句话,如果我发现max这个value。Max value。它小于谁呢?诶小于当前这个元素的值,那小于谁小于int,对这个,哎,同学们想想这个值是不是就是当前你在不停的循环比较的这个值啊。对不对?如果你人家这个值比你你认为的这个最大值还大,那怎么办?交换怎么交换呢?就把这个最大值重新记录一下,说哦,你才是最大的,同时把我们的下标是不是也应该做一个变化,能理解吗?就说你认为这个是最大的对不对?好,那我就把这个最大,但是你认为这个最大比人家还小,怎么办呢?就把这个最大值换一下。同时把最大值的下标也同样的相应变化完事。
13:01
等到它整个for循环结束以后,同学们思考一下,此时此刻,当for循环结束以后,问大家max value和max value index是不是就是真实的最大值,以及最大值的下标,能理解吗?没问题吧,思路很清晰,好,现在呢,我们把它输出即可。Print f,来吧,我写个max最大值value,然后max value的index等于多少呢?来输出一下max value。好,Max。Value啊,我暂停拷贝一份吧,啊,太慢了,好,同学们想,如果这段代码运行成功的话,我请同学们思考一下。啊,我请同学们思考一下,这个最大值是多少,下边是多少,是不是最大值就应该是90。是不是下标应该是为几啊三。好的,我们来看看这段代码能否成功,好,为了这个不跟上面的这个打架呢,我们来来一个。
14:05
我们来一个这个输出一个换行,是不是你不输,你不输出换行,待会儿会有什么问题啊。待会你就跟上面这个粘在一起了,看不出来了,来吧,朋友们。运行一把。运行一把。诶,这有问题,代码有毛病,我们看哪里错了。OK,原因是为什么?这个地方是不是我们。这出了一个什么问题啊,是不是少了一个类型呢?是不是少了一个类型?你把类型都忘了好,这样子就没问没毛病了。这个标啊。这样子看看有问题没有,就是no problem,下面这有个什么,少了一个什么。少了一个这个冒号啊,用类型推导过去的来跑一个,同学们跑起来,请看效果,我们现在看看。
15:01
最大值是不是90下标为三成立。那也就是说我这个完成是正确的,大家看这结果。是不是93。问题那也那有些同学老师,如果我这个元素增加了,你你这个代码能不能一样的变化呢?可以比如说假设你加了一个六,但你这要改成六啊,那我这再来一个,比如说我把这个换成九,9000,那这个时候最大值就应该是9000了。对不对,下边呢,应该是解,应该是五,看看代码有没有问题跑起来。我们一一行,我们发现。Lo。是吧,完全没问题,说明我们这一段代码呢是正确的,好了,同学们,我把第二个题代码也给同学们放到笔记里面去,大家看一下。来吧,这是我们第二一个题的分析以及代码。分析和代码我都给大家板述一下。
16:02
来,跟着思路。好,紧接着我们再来做一个题,同学们,我们再来做一个题,嗯,因为上面已经讲了两个题了,对吧?好,那下一个题呢,我们就放在下一个视频为大家讲解好吧,OK。好,那么这个这个应用案例呢,第一部分我们先给大家讲解到这里。
我来说两句