00:00
好,我们来看一下,下一个案例呢,我们在演示一个对结构体的这样一个操作,那对结构体的操作呢,就比较简单了,就说我们有前面这个基础,那么我们来看如何对结构体进行一个啊这样的一个111个操作,就是一个完整的一个一个操作,好我们来看一下。那么还是老规矩啊啊,那这个时候呢,我们再写一个案例。啊,我重新取个名字就可以了。来,还在这儿,零二。零二,那这个时候我们演示专门演示这个对什么呢?对结构体的,结构体的一个这个反射。对,那既然如此,我们首先呢,先需要啊,我们先需要去呃,声明一个结构体,比如说我声明这么一个结构体type。就IP。呃,那么这个类型我们就这样写啊,比如说是一个student。
01:02
然后呢,Structure。里面有什么字段呢,第一个。有name这个字段。有一个尺寸,然后呢,它有一个年龄对吧,有个特就可以了。然后呢,我们怎么去做它呢?第二个第二步我们定义定义一个student的一个实例。Student的一个实例啊,这个也很简单,咱们这样做VR。SK。呃,这样这样写就完了,Sto。然后直接写一个student的结构体赋值。来一个啊,比如说name。走,那那么比如说这个名词叫汤姆。对,然后呢,还有一个呢,Age,比如他的年龄对不对,20好这一句写完,然后呢,我们在这地方怎么去去进行这个一个操作呢,按照这个改一改就可以了,前面这个地方不用改,该拿什么反射的type还是拿到这个值也是一样的,这个地方我不要了啊,这个地方我就不要了。
02:14
这个地方我就不要了。那下面呢,我们看看怎么把它转成,把刚才拿到这个东西转成一个,呃,接口这个也是一样的,好,下面这个地方怎么把它转成需要的类型呢,这块我们重新把它转成这个结构体,我们来打印出来看一下同学们。同学们,我们如果直接输出这个IV,大家看它是什么类型。你会觉得很奇怪哈,你注意看,因为整本身来说,这个r value,它本身其实就是这个结构体给反射过来的,所以说你在输出的时候呢,你会你会发现一个很奇怪的现象。比如说我写IVIV,然后呢,它的值我们这样输出,它的类型我们这样输出。
03:04
百分这个T,我们来看一下IV好还是IV,我们现在跑一下,先看看我传一个传,把这个学生传进去。Reflect tx02。我把什么穿进去呢?把student穿进去,好,我保存一下。好,我们重重点看一下这个上面,上面这个我先不去玩它了。哎,这还不行,这个不玩的话,你得把这些都注销,不然他说那个number没用过。好,我们来看看现在我们做的是一个什么操作,我把学把一个学生这个结构体传给了,诶刚才删删错了。刚才删错了啊。刚才删错了。算错这个代码了啊,原先这个代码应该是这样子的。好,这这这道问题也不大啊,问题也不大,因为刚才我们应该是。
04:04
再删错了再麻烦啊,我先撤回去吧,撤一下这个快啊,把撤回来就行了。好,这个地方把车毁了。好,刚才我们写的这个代码在这是有的。啊。好,这个应该就就全部撤回来了,那后撤回来过后呢,我在这个零二里面把它粘贴一份改一下就行。好,前面这个不用改,前面这都不用改,这个不要了。对这个不要了,这个呢也不用打印了。然后呢,我把这个R转成一个接口,待会我想测试的效果是在这。在这个地方我要做一个测试效果,就是我想看一看你把这个反射的这个value转成一个接口过后,它到底是什么类型。好,我们来输出一下IV,它的值是这个IV,它的类型,就它真正这个类型呢,我们要输出看一下啊IV2个IV啊,大写的V。
05:13
大写这个V好的。好,这个呢,咱们就写完这方来一个换行。写完了啊,写完过后呢,我们来这这个学生我没调它调的时候我们用TEST02。Touch的灵儿,我把这个学生给它传进去。好,这个就写完了,写完我们看看这有没有什么问题。啊,哪写错了,0202。好,看看还有什么毛病没有好,同学们,我们现在把上面这个注销,不让他输出任何的内容,我们运行一下看效果啊,同学们。我们可以看到,当我们反思的时候,你发现非常奇怪的事情,大家可以看到啊,它的类型是这个,其实这个特别正确。因为它是一个接口,你把它转回来,这个接口仍然是指向这个类型的,而且呢,你把它打印出来,它确实也是个结构体。
06:07
非常的跟我想的一样,但是有一个很奇怪的事情,我要告诉大家,就是说你现在这个类型打印出是这个,但是。你根本就把name取不出来。也就是说,这就是为什么我们要把这个接口断言转成需要类型的原因,其实这个地方才把这个原因导致出来。所以可能刚才。同学一直在想,诶,为什么他要韩老师要把这个转一下呢?因为如果我这样去做,你会发现根本取不出来东西,你看啊,我要取出这个名字,比如这个,这个学生不是有个汤姆吗?你像这样一取,他马上就给你报错了。比如说我要取出他的名字,按理说同学们刚才已经看到你原先是个反射类型。反思这个类型,其实它的本质其实还是指向这个16政的,它因为反射过去,过去嘛,还是把它把它把它指向的嘛,那你这个地方反思完了过后,你看内容也是这样子的。
07:03
但是你取这个name,你发现取不出来东西,对吧,比如说你IV。为什么取不出来,因为这个编译器它并并没有办法在编译的时间,他知道你什么的,看你保存就错了。你看吧,为什么呢?这又存在一个运行的问题,大家一定要非常清楚的认识反射的本质,反射的本质是运行式的。也就是说,虽然在运行的那一瞬间,我们编译器是能够确认IV,它的的确确就是这个类型,以及它的指示这个,但是在编译阶段他没有办法确认这个东西是什么,因此编译器在这儿过不去。这就是为什么我们想反过来再回头拿这个值的时候,你必须通过断言先把它转成。对应的类型,然后再取值的根本原因明白哈,那大家一定要知道,说那韩老师你这预习的时候,它就是它呀。
08:02
它就是它确实是汤姆和20啊,而且类型确确是main点10STUDENT,但是大家不要忘了,这个是在运行的时候他才知道,在编译的时候他没办法知道,所以说你看你要开篇民意,对反射地方,你要开篇民意一句话说的是非常到位的,他说实现了运行时的反射。这是它的一个本质,对不对,不然不然的话你会觉得,诶怎么回事,它取不出来呢,所以这个断言就变得非常重要了,那你在做反射的时候,你肯定需要这个东西,那我们怎么取呢?非常简单,你不要这么玩,因为编译器不会识别的啊,编译器不会识别,那你要做的时候呢,你得这么干。你首先要把它进行一个断言,但是断言的时候呢,可能有同学就说了,说老师。你怎么敢肯定他就是学生?那假设我们将来还有一个类型,它也是它叫这个类型,你怎么办?太婆,Monster。
09:02
总它的字段也是这个。那我把猫传进去,那你那你你怎么敢这样写,就说你IV。IV点,你说把它转成一个student。是的,我确实不敢这样写,那么大家都知道,断言本身它是可以这样做的。有个OK,是不是我们以前学过这个东西,我可以在这判断你有没有成功啊,你成功我再干,不成功就算了,这是第一个方法,第二个方法,你完全可以给我搞一个Switch吗?如果你将来真的要做的很灵活,那你就是Switch,大家还记得我们Switch曾经讲过一个就是它的一个类型,点type的一个类型,大家大家打开我们的手册。我们在什么时候讲过这个东西,还记得吗?是在哪个地方讲的。第第几章啊?第多少章?
10:00
不是关系啊,是不是断言这个地方啊,是在类型断言是不是讲过这个东西,同学们可以看到,当时我们讲了一个比较灵活的处理方法,是在哪里呢?往下找。啊。往往下看。是在这个地方吧,好像这儿。当时怎么做的for循环吗?我我我这个地方当然用不上for循环这个地方用,因为它只有一个变量,那你只需要把这段代码。这样代码给我拿过来嘛,你把这个你你把这个变量那个不就是不就是现在你你的那个接口吗?你这个X不就接口,我这传的也是接口类型吗?你把这个接口点tap看它是哪个类型进去不就完了吗。对不对,所以可以把它做的更灵活,很简单,把我们以前这个笔记拿过来用就行了,所以说这个笔记是非常有用的,大家不要去扔了啊。这这个扔了啊,扔扔的不好。好,所以说你看现在回到这边你会觉得,哦,原来把以前东西也整合上去了,好,那现在我们就这样做了,我就先不用Switch,你们把它要做灵活,你们把这个Switch这个断言给我放进去,我这写一下啊。
11:08
这里这里我就简单的简单的使用了一个这个待判断的,待待检测的带检查检测的啊检测的这个类型断言,那么同学们呢,晚上你们晚上可以这样做啊,同学可以把它做的更灵活,写成Switch,把你能够想到的类型都写进去,封装成一个函数就完事了啊同学们,同学们。呃,可以使用使用Switch的这个这个这个type类型,嗯,Switch。的这个断言,断言形式啊形式来做的更灵活,做的更加的更加的灵活。好,各位同学,那现在呢,我们有了这个东西呢,当然老师就比较放心了,那就写完了,过后我可以判断,如果这个OK,他真的是成功了,就断言成功了,好,那这个16人的就真的拿到了,现在我们就可以放心大胆的把名字,把他的信息全部遍历出来了,把它整个字段都给取出来,好,我就举个例子。
12:10
好,我现在可以这样写了,就是student.name好,这个你放心绝对取出来了,哎,这个时候肯定就取出来了,因为从编译的层面呢,他是知道你这个时候就是16的。对吧,好写杠恩,打出student.name完事。代码,但是如果你断言失败了,那断言失败就算了,我也不影响我好保存。好,同学们来看一下,这个时候我们能不能把这个转过来啊,把这个学生的汤姆这个字段再重新通过这个反射的机制,再重新把它找回来。那同学们可以看到我执行一把,我们可以看到现在打印出来一个结果,跟我们想的是完全一样的啊,这就可以了,好,这就是把这个结构体的一个断言的一个一一个循环给它做了啊好同学们我们把这个呢进行一个板书。
13:03
好,我们案例讲了,刚才讲的第一个是这个,紧接着呢,我们又讲了这个对不对。好,然后呢,我们把代码给各位朋友整理到笔记里面去。代码演示好,基本知识,我们又进了一步,我们又可以做更加高级的东西了。现在呢,我把刚才的代码给各位同学放在这里面去啊,两个文件,一个是呃,Reflect test01反射的基本类型的,第二个类型,第二个是反射结构体的,好,我把它给大家反输到笔记里边去。好,下面两个合在一起的。代码演示键下面。哦。下面啊,下面的这个表格。OK,好,同学们,我就把它放,放好了,给它插入一个小小的表格,没问题。对,然后呢,我们给他表格来一个属性啊,给他来一个别的颜色底纹。
14:06
哦,这个地方以后可以把它做成一个默认的一个颜色。How第文填充。好了,可以。嗯,这么慢好可以了,好,那关于这个案例呢,我们就说到这里,紧接着我们看下一个。好下一个,那么现在呢,我们有必要给家讲一下反射的注意事项和细节,反射注意和反射的注意事项和细节呢,我一共给大家整理了六点,大家注意听这个讲完我们就讲他的练习,就是有课堂练习,然后呢最佳时间,一共给大家准备了大概五个最佳练习,这个呢,大家一看就明白反射的价值在什么地方了啊好,我们先来看反射需要注意的事项和细节,第一个同学们跟上老师,第一个呢,就是反射的这个CA。就是取得这个K呢,是获取变量的一个类别,返回的是一个常量,就是有些同学一直在说这个KD到底是什么,它是什么东西呢?各位同学可以看到,在这里我们先看一下这个CAD。
15:13
打开手册,我们看一下这个CAD。好,他的CAD呢,是有两种方式可以拿到,第一种方式就是通过你反射的这个呃,Value这这种类型,它里面呢,本身就提供了一个方法叫CAD,这个CAD是返回这个V,这个V就是我们说说那个reflect,那个value,那那个那种类型,它持有的分类。那持有的分类,那么这个分类是什么呢?点进去看一下哦,习惯了大家看这个T的代表是态不类型表示的具体分类,那么它有哪种写法,有这么多。你看啊,在他这边看的类型有这些,比如布尔INT8等等等等等等,包括接口,函数,指针,切片,字符串,结构体等等。
16:04
那么这个呢,从这可以看出来,在我们这个地方,这个CAD它就是一个常量,它定义好的这个CAD叫类别。那讲到这呢,大家都应该很清楚,它本质其实就是一个常量,你把它当成一个,它本质就是一个,就是一个常量,这个常量是一个值,IOTA这种写,这种写法大家第一次见。就这种写法呢,大家以前我没有讲过,我在以前是不是没有给他讲过这个常量啊,我们是不是没有讲过常量。常量好像我没有讲,刚好借这个机会呢,把这个常量给大家补一下,就是我以前那个讲的时候呢,这个常量我本身是放在第几章,好像好好像那个地方是那个那个幻灯片少少了几页啊,那个刚好借这个机会把这个常量也给大家补讲一下,就说第一个我们讲了一下,看的是什么啊,这是获取变量类别,本质就是一个常量,你比如说刚才同学们看这里。
17:02
同学们看这里,刚才我们这个地方是拿个tap,但是我们拿到一个常量啊,我我把这个地方再补一个,我看一个常量。大家再补一个,同学们看,这也很重要,我们刚才拿到的type拿到了值,但是我们没没有拿到这个T,我们来看一下,看的是什么,再补一个,再补一道啊获取,获取什么呢?这个这个传入的变量就是变量对应的这个CAD。好,我把这个补一下,刚才我们没用,怎么拿到这个CAD呢?有这么两种方式,第一种通过他去拿,那通过他去拿是非常简单的一件事情。非常简单,那就用r value点开就可以了,而且它返回的就是一个常量。它返回的就是一个常量,好,这是第一种方式,第二种方式,第种方式说老师我通过这个行不行呢?我们看它有没有提供方法,关键是他有没有看有没有提供方法,因为它返回的是一个实现了type接口的一个变量类型,那么我们来lawyer,我们打开手册呢,我们发现,诶,我们发现他的这一个type谱。
18:14
它的这个返回这个type里面也有一个CA,那这两个CAD它们是调用的是不是同一个值呢?显然你从这可以点进去点T,我发现它也定位到这儿,说明他们两个其实说白了吧,都是一个意思,那也就说你通过这个拿也是拿到同样的值,所以这方很很郁闷,就是说有时候呃,对于我们这个刚刚学反思呢,就会觉得诶怎么怎么这样子,但是确确实都可以,他确实都可以,我们来看看是不是这样子啊,来各位朋友我输出来一下。大家看啊,F,我就直接写K。等于我用第一种方式。它是一个值吗?我输出来吗?它是一个值K的,呃,两种方式我都玩一把。等于V,好,我有两种方法来拿啊,一种是它。
19:03
一种是他。好,把这个值取出来是个K。啊,当然你你也可以这样写,就如果简单一点可以这样写。就KD1等于,反正我我接受一下嘛,这个无所谓,好再把这个也取一下KD2,但是呢,这次呢,我用的是呃,另外一种写法用的是用这个type来取的,其实你会发现打印出来它它是都一个意思啊,那么我把它打印出来,一个是CAT1,一个是二,注意听啊。呃,这个反射呢,就是有些那个要求比较高的那种公司啊,他他问的多,他为什么他觉得这个东西难,他就问你用不用他无所谓,他先问你比较困难的,但上来过后他不问你不问你说循环会不会啊,他会反思会不会问你几个问题啊,就蒙圈了啊。那先这样子,他可以打压你的气势,本说你满怀信心准备要2万是吧,第一个题没答上来,诶,啊,就没答上来,一万八也行,在第二个题又没答上来,一万六也行啊,对吧,连续几个问题没答上来,最后一句话。
20:08
给多少算多少,所以这个这个面试官他是有技巧的,我告诉你啊,你们以后去面试呢,你们也不要去准备说我全部都答上来,全部都答上来,说实话不好管理你,对吧,你别人的面试官除了十个题全部答上来,我以后怎么压你对吧,他一定会找些他自己都不会的问题。对,不然都让你答上来,你想一想,那还了得对吧,那你工资怎么算啊,给出了十个题,考了100分,出了出了七八个题全部做对,那不是显得自己很没档次,是不是他一定会出一些比较困难题,所以说你们面试有些题做不出来很正常,但是你不要一个题都做不出来,周老师不只十个题,我一个都做不出来,那你还是走吧啊,他一定会,他一定会这样子,一般会这样分布,就说可能百分之五六十的是基本的,他中档的可能有百分之二三十,比较困难的一定会有二三十就是。
21:00
他一定是你答不出来的啊。反正这个好公司都这样子,差饮就是一般的公司他也会这么去设计,不然的话不好弄啊,不好弄好我们来看一下,看看我们拿到这个东西没有,走跑一个我们可以看到啊,我们可以看到这两个应该是一样的。哎。这两个是不一样的呀。是一样的,看到没有ructru对不对,都是structure,这是类别吗?这个是类别,就它是它是结构体这种类别的,那么这个呢,叫类型哈,类型和类别谁大谁小啊同学们,你们感觉type是一个是一个大的范畴还是K是一个大的范畴?显然这个范畴是不是要大一点啊。是不是这个方向大点,你你比如说就好比这是电器。这个是电器。啊,呃,那这样,这是一个电器,那么一个类别里面有什么呢?冰箱,冰箱就是一个类型,或者这样说吧,这个是冰箱,是一个大的类别冰箱,那么它也不是类别,类类类型的话,比如说我这个是五五百五百的一个,呃,500的500毫升的一个冰箱,那个是1万的一个,对吧,它是它是有类型的,说T呢,它是一个比较大的范畴,所以说你看这个结构体,它既可以是学生,也可以是monster,也可以是person,对吧,所以它是这样子一个关系,好这个大家看清楚了,好这个理解了过后呢,我回头啊,花几分钟时间我补讲一下康的,这个很简单,我给他把那个幻灯片走一下就行了。
22:31
好,这个呢,我还是补讲一下,大概会花十分钟,好,我找到我找到这个第一天。其实第一天这个这个笔记是我昨天昨天晚上刚刚加进去的啊,不是不是那个不是那个当时没有讲,不是当时没讲是本本是这块,呃,就就就当时就没有弄好,我们把这个给他走一下就行了,很简单来看一下常量。那么常量是个什么玩意儿呢?几句话的事,第一句话,常量要使用count来修饰。
23:01
就是它的关键词是。所以你只要看到抗就知道这是个常量,没什么可说的。第二点,常量在定义的时候就必须初始化,这点一定要注意啊,就说你在定义个第一个长用的时候,你必须把它初始化,比如说我举个例子。比如说我举个例子来,因为这个是补讲呢,那就刚好新建一个文件夹,把它的细节给他说一下。好,简单的写几个案例。慢点,够好,我把这一块通用代码拿过来用一下。好,看一下代码,这个我不要了。放me。好,同学们看,我们如果是非常量,比如说一个普通的变量是这样写的,Number写完了。其实你可以不复制它有默认值,它有默认值,因为你不复制它有默认值,但是常量不行。常量这小cost。比如说你定一个这样的这个常量,比如说是叫做text。
24:04
对,Text。这个常量我们看到的一个格式啊,看到常量一个定义的格式。把它打开,它常见的格式呢,是可以这样写个类型在后面的,但是你是这样写啊,完整是constant identify identify就是我们的那个辩论的名称,那么后面这个类型呢,你可以写也可以不写,对不对,你可以写也可以不写,好那如果我这样写的。我这样写啊,同学们看。我在这儿写完了,我已保存。我把这个给它输出来一下。一个是number,一个是text。我已保存,大家可以看到这边马上会有错误提示。大家可以看到一个很很明显的一个错误提示就在这里。他说declared can not have type without expression,就是你没有一个表达是在后边,就说意,言外之意说你在生命的时候必须给值,说老师他不是有个默认值吗?不给常量,常量就说必须给值,如果你不给值,他就他就违反了他的语法,说你必须给,哪怕是零也可以给他一个。
25:13
说我给他一个零,它不是默认自己是零吗?不一样含义不一样,好,所以说大家一定要注意这个第一个细节,就是刚才我们讲的就是常量。定义是常量,在声明的时候时候必须啊,必须给吃。必须复制啊,没什么口不能使用,使用它的默认值,好第一个说完了,接着往下看下面的。第二个常量不能修改,什么意思啊?就说你这个常量呢,一旦给定义好了,就定义好了过后呢,你就不能改,打个比方说老师我这个number我做完了过后我可以改它呀,比如说你这原先默认是是那个零,那我给他一个90没问题,相当于修改吗?这个是OK的。对,它是个变量,但常量和变量的区别在这里说,哎,韩老师,我给他负了一个值,我又把它改一把,说原先是零,我要给它改成十啊,对不起,报错。
26:08
啊,你看这方他告诉你了啊,Cannot删to就说不能够赋值给这个text啊,这个不允许说第二个细节就出来了,对不对,常量一旦常量是不能修改的,不能修改,那为什么管家叫常量,那常量是不能改的,对吧,他不能随便的改。啊,不允许你改好这个呢,又说完了,好,紧接着看下面这个细节,还有一个呢,常量只能修饰布尔数值和罪有,就说咱们常量不能去搞一个其他的类型,就是他。只能去修饰布尔类型,还有特呀,Float呀,顺,你不能去搞一个什么切片啊,切片的目的本身就是人家可以变的,结果你搞个常量啊,那肯定错了,所以这点大家注意一下,常量只能修饰这这些类型啊,这个呢大家应该有个基本的认识。好,我也把它放到这里来。好,这地方我也写到,这常量是只能去修饰的数据类型只有这么几种,哎,只有这么几种,哪几种呢?布尔类型,还有支出类型,对不对?说白了就是基本数据类型吧,就基本数据类型,好,我也把它板书到这里了。
27:15
好,紧接着我们再来看常量还有哪些特点。那常亮还有一个特点是这样子的啊,这个语法语法我就不说了,那么我们来做几个题,大家看这几个对不对,那首先我们看第一个这个对不对。对的,没问题啊,这个是OK的,哎,苏老师你后面不是没有写这个类型吗?我不说了吗?可以可以给可以不给对吧,因为他本身有类型推导,这这个题对不对啊,这里可不可以也是OK的,因为float我把这带上和不带上可以嘛,它类型推导过来嘛,啊你写和不写没问题,这个行不行?哎,这个L,呃,违反了什么错误。B初始化对不对,好,我们再看这个行不行啊。把就是说cost b等于九除以三,这个行不行啊,这个行不行,这个是OK的啊,这个是可以的,因为九除以三是个固定的值哦,九虽上是个固定值没问题,因为九和九和三它是常量子,但是老师我把这个九改成一个变量呢,你试一下啊,就说你像这样做是可以的,你看啊,这个代码我拿过来是没问题的。
28:18
这个代码我拿过来是没有毛病的,他也不会报错啊,但是他会报一个B没有使用啊,他会报这个B没有使用啊,我们可以给他输出一下。各位同学注意这个细节,好,我输一个这个东西,你看B呢,它会输出一个三,这个是没毛病的,把这个对我现在没有切到那去。我重新切一下啊CD。点点CD到constant的这个包包里面去,Go run main结好,我们可以看到呢,这地方确实B输出了一个三是正确的。正确的,但是你你这样看看行不行啊,同学们,比如说我有一个我这样子,我把这个number串进去。
29:00
当然,我也可以把这个number设成九。好,这样行不行,看一下。啊,这就错了。而是不一样的吗?你这个number等于九啊,注意啊,你这个组,你你说这个number等于九是因为你是人,你一眼就看出来了,编译器不知道啊,编译器是说,诶这怎么是个变量呢?他认为你将来这个number是可变的,他就认为这个词将来是不确定的,因为他有可能认为你如果如果编译器能接受这个的话。如果编译器能够接受这种写法的话,就意味就意味着这个B就违反了常量的特点,为什么呢?因为编译器的常量,它是需要在编译的时候就确定你这个币到底是多少。而你这种写法是不确定的,假如你这个number是通过控制台输入的,怎么办呢?那你编辑怎么知道,那就变成运行时了,所以说这个写法是错的,刚才那个写法是OK的,好,这个呢,大家注意一下细节,好,我把它也写到这来。那发现是说这个是错,这个是OK的啊,这个是OK的,再看这个呢。这个显然也是不对的了,因为你刚才大家知道只要是常量,那你这地方就必须是确定的值,而这个get value如果他能接受,那就因为你你你的函数将来返回的是可能是随便变,所以这个也是错的。好,这个就是我们所说的常量的第一部分,接着还有一点再来看。
30:18
那么常量呢,还有就是有两种比较简单的写法,大家来看一下。第一种呢,就是比较简洁的写法,你可以这样写。A等于一,B等于二,这样子呢,就相当于说你有多个常量,你可以用这种小括号的形式把它写进去就完事了。还有一种形式就是比较专业的写法很多,这个呃,这个构程序员写久了,或者他喜欢这么干啊,显得很很专业,他什么意思呢?Cost a等于一个IOTAIOTA什么意思呢?就说表示给A负一个零。其实这个A就是零,你打印出来它是个零,那它表示零,那么下面不给值,就代表在这个零的基础上一次加一,换言之就说B应该等于一,而C应该等于二,OK,就这么一个简单,那我给他演示一下,就你看到这个意思,你把这个看懂了,你回头再看这个就应该秒懂。
31:20
说白了,这不就就负一个零给的嘛,对吧,那要面这就就一个值吗?啊,他自己定了一些常量在这里面表示一个具体值,好,我们来玩一把,看看是不是这样子的啊同学们,好的,我呢给同学们来做一个简单演示看。如果我把康的定义在main函数里边,它就是局部的这种常量,如果写在外边就是全局的常量啊,当然还待会还有个细节还要再说啊,来写个A等于I。OTA好,然后呢,BCD好了就写完了,那写完过后呢,我把它输出来给大家看一眼就可以了。
32:00
好,为了简单一点,就ABCA。D好的,嗯,反正大家应应该能看出来啊,我我就直接运行,反正就你一周圈嘛,0123。好正确的啊,0123看到没有,0123正确,0123完全正确啊好,这个就没没没有毛病啊,是可以的,那还有一个细节,同学们注意听一下啊,还有一个细节就是常量的访访问的问题,那么很多语言就是很多的编程语言里面呢,它一般推荐常量是使用这个字母大写的。叫全大写。啊,比如说像PHP啊,像Java里边像包括像C语言,它一般也会有这样一个规定,但是呢,在go里面没有这个规定,说没有规定说常量必须大写。但是呢,你看刚才我们讲的这个,我们上午还用到了一个时间单位,大家还有印象对吧,你看这个它就不是全大写,这个要注意还有一个细节,同学们注意听啊,常量仍然是有这个访问范围的问题,它的访问范围的这个机制和原先讲的变量一模一样,也就是说它要是一个全局的。
33:13
或者是怎么样的,它也是通过这个首字母大小写来控制常量的访问范围,这大家清楚一下就说好,这个呢,我们就说完了,也很简单啊,也很简单,几句话就说完了,来,我把这个常量呢,给大家简单的说到这里,简单做一个板书啊。板书。好说。It。这个玩意,假设你在。就是你付多半欧卡在银行。嗯。哦,还有这个细节是吧,行,大家大家知道这意思吧,就是写多少遍都是一个字。他是这样子的吧,嗯,如果是这样写,你的意思是写在下一行是吗?
34:04
是这意思吗?你比如说你现在是这样子。你现在就是。A是零,B是一,假设你把CD写在一起。啊,把C和D写在一起,这样子写成一行是吧,一行。有动画隔开。然后你你这边付多吧。啊,后面还要写很多IoTa呀,对,IO,这个IO是永远等于二。哦,就相当于说这个地方就就把这个值固定下来就付给他了,那不要这个IO塔呢。你如果我这样写的话,它会怎么样呢?这就错了是吧?你先等于。等于。两到两个L塔。哦,写两个是吧,这打逗号不?负负两个值啊,然后你BL塔,这时候他就问你C和D分别的多。
35:02
哦,有这个面试题是吧?啊,我们看这个值是多少,我们看一下啊,我们来分析一下,那这个A肯定是还是零嘛,这个lta应该是还在上面,应该变一吧,这个B1,然后这个地方给了他一下,这个是几呢?二这这个这个呢还是二啊,就相当于说这个地方就没有没有没有再递增了是吧。啊,还没递增呢,我们试试看是不是这样的道理呢,确认一下。确认一下好是这样子的啊,那如果说换一行是不是他又变三了是吧,就换一行,如果说我们这样写,呃,换一行这是这个相当于说它只相相当于说我们认为它是一行来进行一个递增一次。哦,这样子的话,它是不是又变成01234了呀。好,右边的010123。好是这样子的,好行,大家明白这个细节就行了,还有另外一个就是他每一次只要你后面再。
36:00
变量在遇到海欧的时候,让海欧。哦,还还有这么一个东西是吧,假设你下面你一个,比如说W。再写一个,对,你这时候那一个海就变零了。那就重新写,他肯定是重新算的。那肯这个肯定嘛,这个这个显然应该这么干是吧,就你写了一个新的东西,那个IoTa,它只是在这个范围起起效嘛,说白了就是这个意思,好可以啊,很好啊,咱们有同学提出这件观点是一件好事,大家不能嫌烦啊,说诶这个大家都在都在说嘛,哎,这个有这个有个细节,大家都注意一下,没什么坏事,好呃,我还写恢复到原先那个最初的写法,因为最多常规的用法呢,就是还是这个写法用的多一点,对不对,一般还是这样写的啊可以了,好,我把它进行一个简单的板书找到。啊啊,那就那就找到这边吧。找到我们的电量。是这个位置吧。好在屁股后面给加进去就完事了。
37:02
好,现在呢,我们做了一个简单的一个案例,对常量,诶常量我们把它摆出到这里,你看这个我们这个笔就有好处,你一改吧,它整个整个就是一个。重新给你排了一下版。好,标题二啊3.24我们做了一个什么呢?诶,我们做了一个常量的介绍,对我们做了一个常量的介绍,然后呢,呃,介绍了什么事情呢?诶大家看一下,一共先说了一下常量的几个特点,对不对,常量几个特点。这么几个特点,这样呢,大家有一个基本认识,把它整体板述一下,然后呢,这个地方我要求同学们做了一些小练习,对小练习具体来说呢,就这么一些练习。好,这些大家就把它当做一个规则记住就行了,没有办法啊,这个肯定还是要记下。最后我们讲了一下康的一些使用的细节,康细节在哪里呢?在这边对,我们在这边讲了一下它的使用的注意事项,总结了应该有四点。
38:05
好哪四点呢,我们看一下。第一点。啊来个标题三,第一个需要同学们注意,这个写这个常量写式写法上啊,写法上第一种呢,就是它的写法一一种比较简洁的写法就放在一起,还有一个呢,就是有一个I欧塔啊欧塔我们就叫这个念吧,欧ta好它可以达到一个自真的这么一个效果,看起来比较专业啊,看起来比较专业,好我也把它放到这里。对,然后呢,这方呢,我们还有一个叫什么呢,就是使用的时候,呃,Go浪呢,它没有说常量必须大写这个要求,但很多其他语言是有的啊,但我们这没有,所以说你小写也是很规范的一种写法,另外呢,一定要知道常量的这个访问,常常量访问的这个范围呢,仍然是通过首字母的大小来实现的,也就是说它这个范围的控制跟以前是一样的啊一样的。
39:02
好的同学们,那明白这个道理过后呢,咱们这个常量就OK了。好,同学们,我把它板说到这里。好,关于这一块的这个这个内容呢,我们先给大家讲到这里。
我来说两句