00:00
各位,我们来接着给大家看一下在go浪中变量使用的时候需要注意哪些地方啊,就说嗯,Go语言的变量呢,它的使用的一些特性跟别的语言还不太一样,因此呢,大家注意听一下变量使用时应该注意哪些问题。好,我们来把这个地方稍微的给它整理一下。好,我们放到这里来先。A、变量使用的注意事项。对吧,变量使用的注意事项,那么关于变量使用注意事项呢,我整理了大概有这么八点八点,那么我一个一个的跟大家讲哈,第一个呢,就是变量表示内存中的一个存储区域,OK,那么该区域有自己的名称,也叫变量名和类型,也就数据类型,好关于这两点呢,我们先把它放到比喻里,我给他画一个图啊,就说。画一个示意图呢,帮助同学们去形象的理解变量到底是怎么存在的。
01:01
好,第一个呢,对吧,变量有自己存储空间,有自己名字,好,我画一个示意图。好,我来做一个示意图。那打开我们的这个地方,我们来理了解一下这个变量是怎么存在的,比方说吧,各位同学还是以这个为例。以这个案例为例,他说比方说我在这个我的代码呢,是这样写的啊各位同学,这是我的一段代码,对不对,就是刚才老师写的这段代码,那么这段代码呢,是给程序员看的,那么一旦我们代码运行起来,各位同学,假设这有一个箭头。注意听,假设这有个箭头,那么一旦我们的程序执行到这么一句话的时候,在我们的内存里面会发生什么事情呢?各位同学,四个亿啊,这是我们的一块内存,这是我们的内存,内存是什么我就不再多说了,就好像我们人的大脑一样,大家记一句话啊,我们所有的代码。
02:04
所有的代码要运行起来必须加载到内存,也就是说我们每一个代码呢,要运行的时候都会加载到我们的内存里面才能运行,明白这意思吧。诶,要加载到内存里面去。啊,也就是说我们的代码实际上是在内存里面在才能运行起来,那么比方说我这有个y I int,它表示什么意思呢?那就意味着在我们的内存里面将会出现这么一个情况,说这有一块空间。这儿有一块数据空间。啊,这一块数据空间,同时呢,有个叫I的变量,它也给你生成了I。好,我放到这里来。哎,这一块I这个I的变量,那么这个I的变量呢,A它就相当于跟这个是一回事了。哎,我画了一个示意图啊,相当这个IE呢,它就直接跟这个数据空间关联起来了。
03:03
明白这意思吧,那你这又负了一个值,它第一次的时候y it,当你没有负值的时候呢,其实它有一个默认的值为零。它有一个默认值为零,OK,但是呢,你紧接着做了第二句话,I等于十,它又会怎么办呢?我们的计算机就会通过这个I这个变量。的名字,找到这个空间,并且把这个零改成或者重新复制为十,紧接着呢,你又做了一句话叫输出,这句话就叫输出,我在我们在上次课已经讲过了,那么这就是输出了一个I,所以说在我们的控制台呢,就输出了I等于十,就这么来的啊,所以说在内存里面,其实它是这样一种关系啊,它是这样一种关系,好的,我把这个示意图给同学们放这,大家形象的理解一下啊,形象的理解一下,OK。我把它放在我们的笔记里面去。好,这是呃,老师说的他的一个注意事项的两点,那么我们再来看。
04:04
Go这个变量使用还有哪些需要注意的呢?各位go变量使用有三种方式,这个跟其他编程语言不太一样,大家注意听啊,有哪三种,我分别的为大家做一个介绍。好,每一种呢,我都举一个案例,注意听讲。啊,每一种我都举一个案例,注意听。好的,那沈总啊,我们先来看。好,我先把这整理一下啊。啊,第一种。就是指定变量类型,声明后如果不复值,将会使用默认值,那么这个默认值是什么呢?待会儿我一个个的说啊,就是说声明过后,如果你不复值,那么它会使用默认值,我举例说明。好,假设呢,我们这个叫DEMO2。DEMO啊,我们新建一个文件夹DEMO。零二。
05:00
好,同样在这里面呢,我们新建一个文件啊,各位同学may go。最听讲好,同样道理,前面这一部分一样的,因此呢,老师就偷懒啊,把这块代码复制粘贴到我们的这个新的案例里面去。好的,那我们来看看。第一种使用方式。高浪。Dot。变量使用方式一。哪种方式呢?各位同学好,第一种方式就这个方式对吧,我们把它放到这里来,注意看老师给大家演示一下。如果不赋值生命后不负值,就使用默认值对吧,使用默认值,比如说VAR。I。Int。我不复制,那么这个不复值的话呢,它就会使用默认值,我们看一下它输出什么。Print LN,好,那么I等于多少呢?
06:00
好,I等于I输出,所以这句话是输出的意思啊,这个逗号代表输出,它同时在输出这个值,注意听这句话啊,这个逗号代表什么意思呢?代表把I等于输出来过后,再把这个I的值输出,相当于说把它拼在一起输出了,能理解啊。好,然后呢,我们来运行,我要点点到上一级目录,大家看啊,我现在在DEMO01对不对,因此呢,我现在要上到上一级目录去讲过吧。啊,CD到M02202里面去,对吧,然后DR里面有一个刚写的go run main.go回车,同学们看到默认值就是零。看到I等于零就来了啊好,所以说同学们呢,理解一下,我们停从这地方可以看到都有默认值,那么int的默认值,默认值就是零。零,那其他类型的默认值呢,我们在后面再讲,因为现在我们只是一个入门级的介绍,对不对,还没讲到数据类型,因此呢,其他数据类型我们后面再说。
07:05
其他数据类型的默认值,默认值后面再说啊,后面马上介绍。后面马上介绍。好的。好的OK,好,这个呢,关于这第一个使用,我们就说到这里,那么看第二种使用方式。好,我先把第一种使用方式给同学们放到笔记里面来啊,第一种。好的。注意听讲。第二种方式呢,各位同学还有第二种方式,第二种方式这样子的,他说根据。根据这个值自行判断。变量类型,这个也叫类型推导,这个是go语言的一种一种特点啊,这是其实也是动态编程语言都有这个特点,包括像PPR Python都有这个特点。哦,那Java没有这个Java在这个Java在新的这个特性里面也有啊,都加入了这个类型推导,那么我举个例子给大家演示一下。
08:08
好,我们看第二种使用方式,叫类型推导方式。看第二种方式啊,注意听讲。看屏幕,那比如说现在呢,我有一个变量,为什么呢,为这个number。我正确用法是这样写的,对吧,我们上次这样是复制的,其实你如果直接复制的话,后面这个inter可以不写,比如说我写一个十点十。十点啊,10.10 10.11吧,那这个时候你看啊,我没有明确指定它的类型,我没有指定指定它体,那这个时候呢,我们的编译器就会去进行类型推导,他发现哦,你给的只是一个什么呢。小数,那么这个number呢,就会变成小数类型,能理解吗?那你说老师,那我如果给的是个十呢,那它就是一个整数类型,那有些同学说老师如果我给的是一个字符串呢,OK,那这个呢就是一个字符串类型,这个就是我们什么呀,这个勾浪里面的类型推导的一种使用方式,大家注意听讲啊,OK,好,现在呢,我还回到十幺幺说出来给大家看一下。
09:19
PRNTL。好,Number等于number,看效果。这是我们的第二种使用方式,类型推导。OK,好也出来了啊,所以说第二种方式呢,大家也要有一个印象,以后你会经常看到这种用法的啊。好的,这是第二种使用方式,老师把它放到笔记里面去,第三种使用方式,注意看第三种方式呢,就是可以直接省略这个哇。不要这个关键字。然后呢,这个时候呢,要用冒号等号这种方式来使用,来同学们看一下第三种使用方式。第三种使用方式也是它的一个特色啊,好,这是它的一个特色,好的好的各位朋友,好的我先请到这里来。
10:05
第三种使用方式。第二种使用方式,怎么怎么使用的呢?它是这样子的,各位朋友。他说。比如说我这里面有个NUMBER2,因为现在我们没有学别的数据类型,我就暂时用这个啊,比如说我用字符串吧。啊,珠串。这有个字符串,名字那轴等于,比如有个人的名字叫汤姆。看到没有,你看同学们看这种方式啊,就是我把一个值交给一个变量。但是呢,前面我损略的这个旺没有这个关键字,那你省略这个关键字的时候,一定要用这个冒号,这个冒号分号,如果你这去掉这个它是错的啊。同学们注意听讲啊,如果你这样用,这叫赋值,这个就叫赋值,赋值的话,这个number,那就是说number,你没有生命就赋值,那是肯定是错误的,因为它违反了我们先定义再使用的原则,对吧,那你现在这个地方要去用的话呢,你损略这个话,你可以把这个冒号给带上就行了,这个也叫也叫。
11:11
定义啊,这个也叫声明我们的一个变量,注意听这句话下面啊,下面的方式就是,其实它是等价于什么呢?等价于这种方式的。VAR。Name。String。OK,这是一句话,紧接着呢,Name等于to。也就是说。这两句话可以合在一起写成,写成这一句话能理解吗?有的,实际上它相当于说声明的时候,同时怎么样赋了一个值。而且把关键字也省略了。OK,就是下面的方式,等价一种方式,可以这样理解,那么我们来用一用,注意啊,这个冒号不能损掉啊,再说一遍,这个冒号不能损掉啊,冒号不能损。
12:00
省略那是错误的啊,这个地方的的冒号。不能顺。不能省略啊,你要省略就错了啊,否则就错的。好的,那同学们注意听老师给大家在输出这句可爱的话啊,叫name等于什么玩意呢?好把输出来。同学们看效果运行一把。同学们看到这里面呢,就输出汤姆了,对不对,好,这是第三种使用方式,同学们呢,做一个了解。好,我把这第三种方式呢,也放在咱们的笔记里面去,第三种方式O了。好,我们再来看这个。这是我们。勾的变量的三种使用方式,大家要有要要有认识啊,紧接着我们继续看它的细节,第四个多变量声明。那么在go里面呢,它支持一次性注意,它支持一次性声明多个变量。很多编程语言里面都都有这个特性,那么我们的这个go呢,它也支持这种语法现象,那么同学们来给大家演示一下什么叫多变量声明,注意听讲。
13:15
好,我放到这里来啊。好的,那我告诉大家具体的运用啊,我来举例说明吧。举例。举例说明。好跟上思路,我们现在呢,仍然在这地方写啊,因为这个是讲的又一个新的知识点,我们最好是怎么样啊,新建一个文件夹啊,这次为了偷懒这样子啊,我就复制看到没有直接拷贝。来了个三,看到没有,它就自动给我生成那个零三,那我把这个名字稍微改一下。叫零三这样这样看起来更更整洁一点啊,零三好,这面有个勾,好相当是我把这个名文件拷贝了一份下来,知道吧,然后就把它删掉了。
14:01
好,我们来演示一下该案例啊。该案例演示什么呢?就是go了。如何?一次性定义或者声明都可以啊,声明多个。变量能理解啊,好,同学们看,假设我们有这样一个情况啊,VR。追听。如果有一个number n等于int。VRN2等于int n3也等于,你看这种很麻烦,这种写法很麻烦。那么我们的勾字是什么写法呢?他说你不要这么写了,这样写吧。N2。N3最标准啊,Int。写完了。这就写完了。这样就写完了,你看这样相对说N1N2N三都是int,注意啊,那这样写的话就说明N1就是int n2也是int n3也是int,这个数据类型啊,整数整数类型,好我们输出一下。
15:08
那同学们想一想,我没有赋值。那么N1。N1N2它分别等于什么,大家应该有印象吧,N1N2分别等于什么,大家可以想一想啊。好,我们继续看看这个地方啊,N1N2,那我就N1啊,其次以此类推,对吧,你输出一下N2等于对吧,N2再来N3等于来N3,同学们想想应该输出什么。其实大家猜都猜的出来,是不是都是三个零呢,因为我默认值嘛。手一把。啊,对不起,这地方你看我还在上一集,所以说我要回到上一集,对吧,然后。三。对不对?好,我回到这一题啊,大家看我用的是相对路径切过去的刀根。看这个时候输出的是N1 N2N3都为零,为什么使用的默认值嘛,能理解吧,好,这是我们的第一种使用方式,第一种使用方式,那紧接着呢,我们看第二种使用方式啊,也是多变量,老师我能不能这样子呢?就是我同一次性生命多个变量,但是呢,我这个就是它的变量类型不一样,可不可以也可以啊来看第二种使用方式,就是一次性一次性声明。
16:29
声明多个多个变量的方式二。啊。注意听那家可以这样写,比如说我有一个N,一是个整数。逗号,然后呢,我还有一个变量为名字是一个字符串,打个比方啊,打个比方,我还有一个N3,又是一个整数,我怎么做呢这样写。直接这样赋值啊100。汤姆。23。888你看这样子也是可以的啊,这样就说我有个对应关系,这样对应关系是如此这般的,各位同学注意听,那你这个N1呢,就对应它。
17:09
Name就对应汤姆N3就对应888,能理解吗?说对对对应关系啊,好,同样我把这个值也输出来给同学们看一下。好,同学们看啊,因为你上面已经有N1N3了,所以说你这样写呢,这个地方代码肯定是编译不过去的,它会报错误啊,它会它会报重复定义,明白吧,因为你上面已经有N1了嘛,你不能再定义一个N1,这叫重复定义啊,大家看,如果对于初学者来说呢,后面我还会强调你看马上报错了吧。他说N1怎么样,已经重复定义过了,好,那这个时候为了演示效果呢,我们先把这个怎么样注销一下能力好,这样就没问题了,来看效果执行一小把。我们,诶,我们看到啊。看到这边有一个提示一个错误。啊,这样的,你粘过来过后这个name没有啊,这地方是N1NAME和N3,那这方我要改成什么呀,输出name。
18:08
对吧,Name这个值。好的,这样就没毛病了。这样就没毛病,走。也OK,看到没有也OK,好,这是第二种方式,那还有说老师还有方式吗?还有第三种方式啊。第三种方式呢,我告诉大家也很简单,它是这样子的。他说他可以使用类型推导。同样。同样。可以使用类型推导。类型。推倒啊。类型推导呢,那就是变成这个样子了,同学们看啊,我还是把它粘贴复制下来,注意听讲,那现在呢,你可以把这个挖去掉。把这个Y去掉,那为了演示呢,我把上面先注释掉啊。注意我这个怎么注释掉的啊,我是CTRL。这个以前讲过,CTRL加这个斜杠就是注释啊,啊注意注意这个注释啊,好大家看这个N1NUMBER,那我怎么样呢。
19:05
这样子一样的。这种写法也是可以的。这个使用的就是类型推导,我直接给他赋值,什么都不写对吧,然后呢,这个其实这句话其实有点等价于上面这句话的意思,但是呢,因为你这个地方已经有了一个冒号等号,这个就代表声明,所以说前面这个哇呢,就怎么样去掉了。他支持这种写法,好的,那么我们为了演示呢,我们把这个名字改一下,改成汤姆,看有没有变化。执行。我们可以看到他们变了,对不对,那说明我们这个代码呢是没有问题的,好同学们,这个是。这个多个变量声明的三种方式,三种方式,那么我把它呢,也给大家放到笔记里面来啊,OK。哪三种方式啊,我们把这个代码给大家放到一起来。这三种方式。
20:01
好,我把它放到笔记里面去。那那有时有些同学老师这里面还有一个问题啊,同学们,因为我这声明的这几个变量呢,它都是在函数里面生命的,嗯,有一点编程基础的同学就知道,呃,有时候会涉及到一个全局变量的问题。那有些同学老师我声明一个全局变量,可不可以也这样声明呢?其实也是可以类似推导的,我再给大家举一个例子,就是如何追听,如何一次性。一次性声明,声明多个。多个全局变量。啊,这什么叫全局变量,呃,如果是初学者的话呢,有一点不太明白啊,你先听一耳朵,先听一耳朵,所以全局变量就是在函数外定义的,这个就是一个main,就是函数嘛,好,所以说呢,这个全局变量你可以理解成就是什么呢?就是。
21:00
在构中啊,在这个构中,在构中。函数外。函数外定义的函数,外部定义的变量或者生命的变量都可以啊,变量就是什么呢?就是全局变量,能理解吧,全局变量好,那现在呢,我给大家演示一下吧,我给大家演示一下啊,如果如何声明这个东西。走到这里来。还在这儿举例子啊,还在这儿举例。还在这儿举的。那所以同学们注意听,那怎么来演示这个效果呢?比如说。这样子的。VRN1。等于。100。好,VN2。等于200。好,我再定义一个名字,Name。等于。Jack,好,为了演示效果,先把这个先注销。同学们看到这个呢,就是三个全局变量,大家看这里面为什么报错了,是不是因为你没有用到format这里面的这个包里面任何方法。
22:09
啊,任何函数就报错了,好这个呢,叫做定义三全局变量。全局变量,那么我们来先用一用啊。我们先来用一用输出。输出。全局变量。好,我快速的给大家写一下啊。往这粘贴复制一把,上面N1N2NAME都有了,我把这个改成N2就行了。大家看效果,我一执行。同学们看到。是不是上面也输出了100JACK和200啊?没问题吧,但是这种写法呢,各位这个设计者认为有点麻烦。啊,一般这样写呢,他觉得比较麻烦,他怎么做呢,他可以把它改写成这种方式,就是一次性声明的啊上面的写法。
23:04
上面的这个声明方式啊,声明方式也可以改成。改成一次性声明。改成。一次一次性声明,那怎么写呢?注意看效果。就这样,VR。VR。好,我也我也不去注销它啊,我为了演示不同效果,我再写个N4。N3。等于。300你看它可以这样算,证明N。N4。等于900,再来一个名字吧,NAME2。等于。尊,比如说叫做Mary,大家看这种方式啊。这种方式和商品方式是等价的,其实这种方式呢,在我们实际开发中用的也是比较多的,所以大家这种方式呢,也要掌握一下来,把这个呢也给它打印出来。
24:01
我直接复制当前行啊。这样的怎么复制当前行的再说一遍,Shift加alt加向下的向下的箭头。好了,我把这个输出来一下N3。N3。内蒙二。NAME2。N4。N4,没没毛病吧,好,我把这个注销一下先。好,同学们,我们执行一下吧。我们发现是不是又把全局的输出来,Marry看到没有,好同学们注意,这就是我们的什么呢?就是这几种全局变量的生明方式啊,全局变量生命方式我把它呢也放到这儿,注意啊,我们现在在打基础,所以说同学们呢,要稍微的耐点心啊,因为你没有好的基础,后边你学习起来压力也是比较大的,所以说这是。定义全局变量的两种形式。好,把它放到这儿。
25:00
OK。好,那大家看啊,我们现在呢,讲了这个变量使用注意的四个问题一二。三主要是。勾浪变量使用的三种方式,大家一定要一定要理解啊,不然的话,后面我们写代码的时候你看不懂,还有多变量是怎么生命的,也有几种形式,对吧?大家看我这也一每一个都做了一个介绍,每一个都做了个介绍,好那么后面呢,还有还有这个四个细节呢,我们放在下一个视频里面去讲解,大家注意听啊,好,我们先截取一段小视频。
我来说两句