00:00
我们现在来看一下。数组的便利。那在勾勾当里面呢,数组便利有主要有两种方式,一种就是常规的便利方式,那常规的便利方式呢,我在前面已然给大家讲过了,你比如说同学们看这里我们常规的便利方式是不是这样就可以便利?对不对。就是用普通方法就负循环就可以了。这个是常规的便利方式,这块呢,因为老师已经讲过了,我就不再赘述了,我们来讲一下,就是在勾浪里边,它有一种特殊的或者独有的。这个遍历数组的方式叫foreign,那么foreign的这个结构来遍历呢?它这样子的就是go语言里面一种独有的结构,用来遍历访问数组的各个元素。好,我们呢就以这个为例展开讲解,我们先来看一下foreign的基本语法,大家看这里。非常的简单啊,就for,然后呢,前面来一个值index,第二个是value,然后这个地方大家看这个符号,这个是一个类型推导符。
01:08
也就是说相当于定义同时赋值对不对,注意下面呢,这个range就是为什么叫for,就是这这有个for,看到没有,这有for,这有个range,所以说在开发的时候呢,我们程序员goon程序员呢,经常就说for这个结构后边这个就是你数组的名称,就是你要去便利的数组的名称,那么在这里我总结了有五句话,大家来跟着老师走一下。跟着老师走一下,来我们一起看一看。第一个需要同学们知道的是。Index是数组的下标。也就是说他在遍历这个数组的时候呢,他会。依照这个顺序依次遍历,它会先把先把什么呢?这个201的。
02:01
第一个元素的下标给你放到这个位置,然后呢,Y是什么呢。这个Y6是该下标位置的值。也就是说。也就是说这个index这个下标。对应的那个值是多少,就是value,也说一个是下标,一个是值,能理解吧。OK,那么他们都是仅在for循环内部可见的局部变量,这个是不是又涉及到变量的作作用域了?我们在讲变量作用域的时候,老师说过,如果我们的变量是在for循环这个语句块里面定义的,那么它的作用域只能是在哪里?只能是在这个负循环的。这个代码块里边,除了这个代码块就不能用了,也就是说index和value其实只能在哪里用呢?在这个大括号里面用。能理解吗?就是说你不能说我这这有个index,这有个value,我跑到下面来用,这是用不了的。
03:02
第四点,遍历元素数组时,如果不想使用index下标,就说你可能只想要值,不想要下标,有这种需求吧,就说我在遍历一个数组的时候,我并不关心它下标是什么,我只关心每每个元素的值怎么样呢?可以用把这个下标用用一个下划线。下划线还记得是什么符号吗?是占位符,占位符也叫忽略,就不是,所以我不想用index,我就忽略它,当然你也可以把这个忽略了啊,这是看你的需求。最后一个index value的名称不是固定的,及程序员可以自行指定,但是一般我们把它写成index和value,那有些程序员也这样写了,他说我不这样写,我用for。然后呢,这边是I一个逗号V。然后一个类型推导服务,对吧,Range这也可以啊。可以,没毛病也可以。也就是说这两个变量其实就是名,这个名称并不是固定叫index或者叫value,而是程序员自己指定的,能理解吗?但是一般来讲呢,我们给它取个名字叫index和value。这样显得比较。
04:12
通用好的,那这块大家看看应该介绍是不是就基本上明白了,那下面呢,我们来走一个案例,来先把笔记补一补。好,同学们,我们来走一下就是。数组的便利。数组的便利。我们来给大家整理一下。标题二。标题二。那数组遍历呢,刚才老师已经给他给大家大体的走了一下遍历方式。第一个便利方式,第一种便利方式是不是老师刚才已经说过了是吧,这地方我给他来个三号标题吧。给他来一个三号标题。然后这个地方呢。我们又来一个三号标题。
05:03
三号标题在哪儿去了?很讨厌啊。暴躁。诶,刚才这个地方为什么没有选中三号标题呢,这样就可以了,好。这是go的一个独有结构,好,现在呢,我们来说一下它的基本语法,就是for的基本语法是什么?For range。Foreign的基本语法。我们把这个基本语法呢,刚才也给同学们做了介绍了,我把这个基本语法给大家拿到这里来,好吧。给大家拿到这里来,包括下面的说明我们都有。Okay。好,这块注意老师说的这几这这这几个说明大家要要有印象啊,第一个第二个这个大家自己看一看。好把它整理到,那下面呢,我们就来做一个案例。我们就来做一个案例给大家演示一下。
06:01
好,我们来案例演示for的一个案例应用。For。的案例。好,我们来写写一把,那因为这边的代码已经够多了,我们干脆新建一个好不好,我们新建一个文件夹来写叫。DEMO0几呢零三,干脆我们这样写吧,Range叫叫就就直接叫for好吧,For,这样比较好看。For。Four。For a,便利。那我们还是老规矩,写个man.go may go来写起这个程序,它的一个主体的一个价价价值,然后import。来,然后呢,写一个主函数。对吧,写主函数过后呢,我们就演示一下,演示什么呢?For来遍历数组。
07:01
For range便利。宿主。OK,那首先我们来定一个数组吧,定义一个数组,比如说我们这有一个数叫hero,就就有很多的英雄在里边,Heroes。有很多英雄,然后呢,是这个数组里面我们就放三个三个元素。走,现在还没有讲细节啊,同学们,现在我们还没有讲数组的细节,后面我们还有好好些细节要讲,现在还是大面上的东西,能理解吗?走一个。好,那我老规矩。这帮根据初始化的方式呢,我们这写个三,然后是所以这些地方必须要写啊,你不能说我这不写这个,你你你这个编译是过不去的,知道吧。边过不去。好,第一个英雄我们叫做宋江。第二个我们写一个叫做无用。吴用。对不对,第三个呢,叫什么呢,叫卢俊义。
08:01
OK,好,这就写完了三个,刚好再说一遍啊同学们,这个地方这个是不能少的,就是我说的那几种方式,你不能说我我我不按那个写,我我瞎写,比如说有些东西我这样写行不行,那你这样写你试试看。那代码肯定是报错的,他直接编译不过去语法都错的知道吧,就你必须按照老师告诉你的方式来初始化才行。或者你把这个去掉也行,如果你觉得繁琐,这个去掉也行,如果你觉得还繁琐,你可以把这个去掉,你干脆就用类型推导,这样可能更简洁一点。是吧,这样也可以,但甚至你要说的更简单一点,对吧,你把这个写更好。但是你不能说连这个都不要说,老师我把这个去掉行不行,这个去掉又是错的了,语法又是错,你看报错了直接。看一下。我们把它保存一下。好,我们来看看这,诶他没报错是吗?一定会报错的,我把它打印出来看一下。Heroes。来走一个,这样子应该是跑不起来的。
09:00
为什么这没报错呢?诶,你看一下就报错了,诶这heroes heroes。他有时候呃,反应有点慢,对吧,我们再来跑一下,你看还是报错heroes那单词写错了。没有写错是吧,你看这就是不行。你看这样就不行。对吧,你因为为什么你把这个数据类型都没写进去。看这样一写他就没报错了,对吧,是不是没报错了,但是这样写呢,它是把整个数组按照首地址的方式以下遍历的,我们希望把每个英雄取出来,你还不能用这种方式,好,我们来便利一下,用foreign,呃,常规的方法我就不写了,就是使用。常规的方式。常规。常规的方式便利方式,方式便利我就不写了,我不写了。你们自己去写。啊,因为前面我已经演示了,下面呢,我们用for for这样写了,For谁呢,Index。逗号value对吧,如果你想这个烦的话,你也可以简单这样写,写个I,写个V,这样也可以,也可以注意有个类型对档,然后range range谁呀,Heroes。
10:11
然后括起来。对不对,那同学们想这个I就是下标,我们把它输出来一下我卖。我们格式化一下,好,I等于V这个值,然后呢,V这个值等于V,注意啊,这个地方这两个概念是不一样的,这是格式化的,后面这个V是我这想跟它对应,明白吧。这这两个不一样啊,同学们,这个是我这听的变量的名字叫V,这个百分号V呢是格式化它规定的,就这么写的,不要搞搞蒙圈了I然后呢,写成V,好写完了我们看看这样子结果是不是就已经出来了,我们便利一下,这写完了已经大家们便利一把走。好,现在呢,我们回到上一级目录。CD到二零几啊零三,然后诶我没进去吗?CD到二。
11:06
哦,不是没有零三,我们是写的叫for range进去,然后go run,谁呀,命点go。跑起来看效果。同学们可以看到这个地方,这个值就已经取出来了。看这里。I等于零,V等于宋江,I等于一的时候,吴用,I等于二的时候,V等于这个卢俊义,也就说,也也就是说,下标为零的这个元素的指示,宋江下标为一的是指示,无用下标为二的指示。卢俊义,对不对,当然有些同学说了,说老师那那如果这样便利的话,我我能不能这样用呢?我还想用传统的方式再用一下,可不可以,当然也可以,但是建议既然你已经用了这个方式,就就用这个方式了,有些同学老师我这样写行不行?说我我这样写,比如说我要heroes。
12:01
注意听啊,Hero。Heroes,然后呢,他故意,他就喜,他就喜欢这么去捣乱是吧,他说老师,我这写个D。对吧,写个D,然后等于什么呢?等于它的一个值。等于一个值,但是呢,他取的时候,他又想用传统的方式也来取一下heroes。Heroes,那这帮写上I,因为这个I呢,大家都知道,就是下标刚好是下标,他还有用这种传统的方式来取下可不可以,当然也可以,但是呃,既然我们用了这个方式,我还是建议大家直接用上面这个就行了,别两个都去用对吧,但是从语法上它也是不会报错的,走一个。看效果。对吧,你看一样可以取出来,诶这么写错了F。V哪里写错了啊,还有一个I是不是没写出来?对吧,这样就对了。这样就对了,OK heroes,那跑一个吧。
13:01
走起来。来看,你看这样是不是也也是可以的,你看。同学们看,这里第一次I等于零,宋江HERO0也等于受江,一吴用下边为一等于吴用,二卢俊义下边为二,等于无俊义,都可以,都可以。好,两种方式都可以,那么我这里强调一下,就是有些时候呢,因为种种原因,有可能你不想用下标指向要值,又怎么写呢?可以这样写。如果我们只想要V,不想要这个下标,你可以这样写就行了,这样写的话呢,可能就说你只关心这个值,那这样写就行了。就是元素的值,比如说。元素。元素的值对不对,等于V,那你这只保留一个就可以了,能理解吧,因为这个时候呢,相当于说我不关心它的下标,我只关心hero里面的值就行。来,再跑一个。
14:01
跑起来。看效果。我们可以看到。我们可以看到。是不是原说的是宋江吴用卢俊义一样可以取出来,好吧,还有一点我们要强调一下啊,I和V它的作用欲就是你这个地方的I和V只在这一个for循环里面块,这个V只在这个for循环。作用,那你离开这个环境,你就不能再用I和V了,因为这是变量作用域规定好的好,同学们关于for的这种使用方式呢,老师就给大家介绍到这里,这些都是基础啊,后边我们写项目的时候,这些都要用到万丈高楼平地起,所以说还是要把这些基础打的很牢实,不然的话,你后面写项目的时候,你立马就会蒙圈。好,同学们,那关于这个for的案例我们就说完了。好,我把它给它给大家整理一下。好,同学们,那现在呢,我们就把我们讲了哪些内容,我们回顾一下,这块呢,我们讲了一下为什么需要数组,讲了数组介绍快速入门,还有定义和布局,尤其是这个布局,同学们一定要非常的清晰。
15:13
只有你理解这个,你才能理解数组在内存里边,在底层,它是以什么形式,什么方式存在的,然后呢,我们讲了数组的使用对不对,重点讲了数组的如何访问,然后一个案例还有一种四种初始化数组的方式要有一个。基本的认识,另外一个呢,同学们就是还要掌握一下数组的便利,便利一个是常规方式,常规方式前面我们一直在用,还有一种方式就是刚刚老师讲的for的这种方式来便利,对吧?这种方式呢用的也是非常多的,后边你们会看到我们在写项目的时候,经常会用到for这种结构来遍历数组。好,同学们,那关于数组的这个前面这一部分的基本就说完了,那么下面呢,我们就要开始讲什么了呀,如果你只是掌握了宿主这点知识呢,可以说。
16:08
工作的百分之七八十基本上就可以应付了,但是还有一个什么呀,使用细节和注意事项,那么宿主的注意事项和细节呢?我一共给大家整理了将近有这么十点。四点,那关于这个细节这块呢,我们就放在下一个视频为大家进行讲解,OK,那这块我们先说到这里。
我来说两句