00:00
我们再来看方法使用的注意事项的第三点,高浪度的方法是作用在指定数据类型上的,这点我们前面已经说过了,只要是自定义类型都可以有方法哦,不仅仅是结构体,就是structure,那比如说像int float、三二等也可以有自己的方法。这点呢,我给大家做一个演示,前面没有讲过的,我重点说一下。注意听,就是说包括我们像int类型FLOAT32也可以有自己的方法,那我给大家举个例子。好,那么这个时候呢,我们新建一个文件,好吧,新建一个,这叫方法的一个细节。Method,我看看这个方法细节有没有啊,Method detail好像还没有写。Message,好,OK,我新建一个文件,Message。TEL。对吧。好,我们同样的道理,我们新建一个文件叫面点构。那么我从这边呢,粘贴一份过来。
01:02
粘贴一份共用的部分。好,放这那我们来写一个主函数。好写完,那现在呢,我们来探讨一个,呃,探讨一个就是新的话题,就是呃,我们所说的这一点,哪一点呢,就是我们这种普通的啊,就是int flu32呢,它也可以有自己的呃方法啊,也也可以有自己的方法,我们看一下案例。比如说现在呢。我这里有这么一个东西。我有一个自定义的int integer type integer。In,没问题吧,我就叫int,也就是说我给int呢做了一个自定义。那相当于integr,就是int的一个别名,对不对,那我现在给他绑定一个方法,比如说我这样写啊,Fun。然后呢,I in。没问题吧,Inter,然后呢,我就叫print打印一下他的值。
02:04
非常简单对吧?非常简单,写完我就打印print,走A,好,我直接输出I等于I完事,一个非常简单方法,那现在呢,我们来定义一个integr。比如说我有个变量叫I in tIgEr。好,我给他一个值吧,比如说是十,然后我用I来调用print方法。没问题吧,这个。那也就是说我这个方法,Print这个方法其实是作用在inter的。那这个ineg是什么类型呢?就是inter类型。我可以这样写,就说大家不要认为我们这个方法一定是跟一个结构体绑定,它也可以是一个英特呀,FLOAT32的这种,呃,自定义的这种这种类型,明白吗?好,我运行一下那CD点点CD到我们的method。Detail。Method details。好,我们go run me.go跑起来。
03:03
我们发现这个时候呢,输出了I等于十,没有任何问题,甚至你还可以通过这个方法来修改,修改我们的变量,比如说。写个方法,请编写一个方法。可以,可以改变,可以改变这个一个整数的值A的值。我可以这样做到。我可以这样做到,你看我这样写,大家看啊,非常的简单,我们就利用他这个指针的方式来做int,好,然后我这样写了看啊int。In。I等于新I加一。大家知道什么意思吧,就是把这个值取出来加一,再重新付给他,相当于说改变这个I本身值,而且它因为是指针,因此你传过来什么值就把它自己改了。那也就是说你看我这样用。同学们看啊,呃,这个地方我改个名字吧,叫change。那我就掉了啊i.change。
04:02
完事,那就说我通过I点迁移,我把这个I传给了他,传给他功能,因为它是指针,所以说这个I其实和这个I是同一个I。因为这个时候它是进行一个地值地值拷贝,并不是只拷贝,所以说这里面这个对I的修改会直接影响到main函数里面这个I,那也就是说这个时候这个值应该变成多少呢?在这个基础上加了一个一。是不是加了一个一啊。好,我把它洗出来。Print。来I等于轴I,这个时候你会发现它打印的是11。抛起来。我们可以看到的确变成11是这个意思吧,你看11。OK,好,这个呢,就是老师给他讲的这个问题,就是十变11加了个一,好呃,这个呢,就证明了我们这个观点,就是不一定是结构体,像int float,它的自定义的类型,也可以去绑定方法,好吧,好,我把这个给大家板述一下。
05:10
好,我把它板书到我们的第三点里面去,也很很简单啊,好,我们再看第四一点,同学们注意看听方法的访问控制的规则和函数是一样的,即方法名首字母小写只能在本包访问,方法名的首字母大写,那么就可以在本包或者其他访问,这这块我就不再多说了,因为这个以前我们在讲过案例的就是你要记住,如果说。如果说你这个print是小写的,那么你这个print方法其实只能在这个包包里面用。面包,别的地方用不了。啊,如果你把它改成了P大写的好,那你这个方法就相当于变成一个公开的方法。那在其他包也可以去调用这个类型的print方法,明白这意思吧,好,这点我就不再多说了,好吗?这点呢,把它整理到这块,不举例了啊,不举例了,这是第四一点。
06:04
我就讲解一下就可以了,我们再看第五一个细节。我们再看第五个细节,第五个细节是如果一个变量类型,应该说一个类型啊,这样说一个类型。如果一个类型。一个类型。一个类型实现了string这个方法,那么在这个format.print呃输出的时候就是呃,Format print LN这个默输出的时候呢,就会默认调用这个变量的spring。这个方法进行输出,也就是说如果你实现你你去实现了这个方法,写了这个方法对不对,那么当你去调用这个输出的时候呢,它会直接调用你这个这个方法。这个也很有用,比如说我们在输出日志的时候就非常有用,比如说我们输出一个结构体,它的信息就可以用这种方式来解决,很轻松,以后就变得就是不用那么每次都写那么长的一段代码,直接把它封装到这个十寸这个方法里面就可以。
07:11
那我给大家做个演示,那做个案例吧。那同学们打开我们的这段代码,我们来写一写一下,比如说现在呢,我有一个结构体。叫monster。注意听monster OK,然后呢,它是一个结构体。呃,我叫学生吧,咱们叫学生student。好学生里面呢,有名字。好十寸。这个没问题,学生呢,还有年龄。Age。哦,就写完了,写完然后呢,我们来看一下啊,假设我给这个student实现的一个方法,给什么呢?给student。实现。方法,哪个方法呢?就是时钟这个方法。好,我给大家写一下啊,放。
08:02
那这里呢,我就传一个sto变量进来,和谁绑定呢?Student这个绑定那最好呢,我直接用这个绑定用指针,因为待会呢,我就不用每次都呃,我每次都给他传一个那个传一个传传一个副本过来是吧,不划算,所以说呢,我就直接用指针实现它指针就完了啊,实现它的指针类型,那这个地方方法名叫时寸返回一个时针。好,那这个时候我怎么来做这个,做这个处理呢?就这样写,就form.print。好,这里面我们我们可以把它信息取出来,比如说name等于。对吧。这个如果同学们学过Java的话,其实就就知道Java里面也有个方法叫突斯润。和这个很相似。H等于。好,我们也把它做出来,然后呢,这里面我们输出student里面的名字,再说student里面的age写完了。
09:00
然后呢,注意把这个返回去。完事。那这个时候,当我们去进行这个输出一个student这个变量的时候,它就会默认调用这个方法来玩。那怎么证明呢?来,我们来做一下,先定义一个stu student变量。这个没有问题吧,那就SQ走。第一个啊,Student。好,我给它赋些值。那复制的方式很多,那么我们就用这个方式直接给他复了,好吧,那。好,第一个呢,我们叫汤姆。Age。H我们叫20,写完了。这个时候大家看到它是一个什么类型,它其实不是,它就是16帧,16帧类型,但是人家就是信号,所以说我们在输出的时候呢,要这样写。好怎么写呢,这样子S,因为人家是一个地址吗?啊,人家是个子嘛,所以传个地址,如果你不传地址,这样传的话,会会出现什么情况呢?那相当于把这个对象本身就直接输出来了,你看啊,这样输出的肯定就是相当于把把这个结构体的字段和他的名字就输出来,他肯定不会去调这个,呃时针这个方法。
10:14
因为这个你就是输出一个结构体变量吗?那他就用默认的方式把你这个name和这个呃,Name和这个edge输出来就完了,大家看。这个时候他不会掉那个时针方法啊,注意看。这时他是不是就是按照他原先的那个方式,把这个结构体给你输出来了。那你要去让他调用这个时针方法怎么办呢?因为你这是指针嘛,对不对,那我这。再传一个这个就行了,这时他就会去找到这个指针类型里面的时针方法调用它,然后返回一个字符串,最后输出这个字符串。明白吧,好,我们再执行一下,效果就不一样了,跑起来我们可以看到同学们,我们可以看到此时此刻,它输出类目是name。汤姆age这个诶大家看这这两个中括号是不是就是我们在程序里面该写清楚写出来的呀,是不是就这写的呀。
11:08
看。是不是就是这么写的呀?因此,这种方式就会默认。默认就如果啊,这样说,如果你实现了这个方法,当然就说。如果。如果你实现了什么呢?这个方法student。这个类型的。什么方法呢?是准方法。什什么方法就会调用,就会自动调用。自动调用,诶自动调用。对不对,自动兼容,那有些同学老师我如果没有实现呢,诶如果你没有实现,你相当于把什么输出来了,是不是把你家地把他自己的地址输出来了呀,是不是这两个效果是完全不一样的咯,你看。如果你没有实现它输出的是它的一个地址而已,看到没有地址,同时把它值也取出来了。
12:04
但是如果你把这个实现了好,这时呢,它调用就是十寸这个方法来完成这个这个这个这个操作,你看是不是这样子的,Name等于Tom h等于20这样来的啊。好,同学们,那关于我们所说的这个细节呢,老师就说完了,我们把它板述一下。来,走一个。主要是讲到哪里,讲到这。是吧,核心代码是这一部分,我们就只把核心代码拉过来。我不把所有代码拿过来了啊。这段核心代码。然后我们怎么用的呢?用的这段核心代码,我们也把它拿过来。就这样使用的对不对。我定义了一个student的变量,然后这样传输的。注意啊,同学们,这里我们要注意传的时候要传一个地址过去能理解。阐述一下。OK。
13:01
好的好,往这边拿一下。好,同学们,那关于这一个我们。就是方法的,方法的这个注意事项。方法的注意事项。诶,这个地方没点到吗。方法的注意事项和细节呢,五个点我们就全部讲完了,这五个点你不要小看啊,我们有些这个程序员,他工作了那么一年两年,可能都没有把这个搞清楚。因此呢,这五个点一定要把它拿下,就是在你的脑海里面要非常清晰的知道,在我们使用方法的时候,这有些使用陷阱在里边,尤其是同学们要注意,尤其是这一点。就这个地方。就这一点啊,就是通常我们是实现结构体的指针的这个方法来做。啊嗯,为什么,因为这样的效率就会高。不然的话你会发现,诶,人家为什么程序跑起来那么快,而你跑的速度那么慢呢?就是因为你实现的直接是结构体,它会进行一个只拷贝,而我们是如果是实现的是结构体指针呢?诶,那人家就是直接传一个地址过去就完事了,好吧,这个细节大家一定要注意注意好,那关于这块方法的细节呢,我们就全部给大家讲完了,大家消化一下。
我来说两句