00:00
老同学们。大家好啊,我们现在接着呢再给大家来看一下,就是标识符命名的时候,咱们需要注意哪些问题,我这里呢给大家总结了三点,第一个报名。大家看到我们在使用的时候呢,我在第一天讲过,说我们每一个注意听我们每一个文件,就是你每一个个文件呢,都应该归属于一个包。明白这意思吧,我在前面已经讲过这个事儿了。讲过这个事了,那么我们既然归属于一个包,那么这个包名的规范又有哪些呢?请同学们跟着老师来一起看包名。那么既然你是一个包,就要保持我们这个包的名字和目录尽量保持一致。尽量保持一致,它是不是绝对的啊,它不是绝对的,它不是绝对,你比如说你看刚才我们讲的这个玩意儿,你看我们这个妹点购我的包叫may,但是它的文件夹呢,叫identify DEMO。对吧,但是实际上在我们开发中,我们尽量要求你的这个包名,就是你这个包名应该和这个。
01:08
这个外面这个文件夹的名字保持一致。保持一致,你比如说吧,同学们,我们来看几个案例,比方说我们找到我们的源代码。我们找到我们的源代码go里边有一个SRCSRC下面你看这里面就是文件夹了,你看这个文件夹叫format。你看我们随便打开它的一个这个文件夹下面的源代码,注意看。你看到他的包就叫fmt,你看他没有写别的包名,就说它的包名呢,就跟他所在的文件夹保持一致的,我们再看一个同学们,比方说我们看一个这个errorrows errors OK,打开这个errorrows.go。我们发现它的包名呢,也叫as对不对,所以说呢,我们尽量让这个包的名字跟它所在的文件夹怎么样保持一致,所以说这是一个要求,这是一个要求,而且呢,我们这个尽量采用有意义的报名,简短有意义,不要和标准库的包名保持一致,比如说打个比方,我们这个。
02:19
我们已经有个标准,标准库的包叫fmt,你就不要再用这个,人家已经用过这个包名了,你不能这样说说老师,我现在有个包,我想打个包名。叫什么呢?叫fmt好,这样就特别不合适,因为因为人家已经用这个苞米了,你再去用呢,就容易冲突,明白吧,好,这个地方注意一下。注意一下,那问题来了,有些有些同学说老师。有些同学就说,老师,既然我们尽量和这个呃,名字和目录保持一致,包名和目录保持一致,那你能不能给我们演示一下,好,我给大家演示一下,比如说我就拿我们以前写的案例吧,比如说我找一个。DEMO5大家看到,嗯,DEMO5呢,我们以前写的时候就直接。
03:07
刷新一下啊。我们来拿代幕四吧,拿代幕四代幕式,大家看到这里面呢,有一段代码,你看这个闷点go。看main.go你看这个main点购呢,它实际上是在这个DEMO04这个文件夹,但是我们取的包名叫main,其实这个呢,为什么我这设计呢?是因为因为我这个文件夹下面就一个文件,因为我就演示这一个案例,所以说我是这么命名的,但实际上在正式开发中,我们应该这样子来做更规范,就是保证包名和外面的文件夹保持一致,那应该怎么来设计更合理呢?注意听我说应该这样子,我们在这个DEMO里面呢,再新建一个文件夹叫。没。好,然后呢,把这个me挪到这个文件夹里面去。你看这样子就能保证我的main.go的包名和他的这个什么呢?和它所在的这个呃,文件夹保持一致这样一个规范的,明白了吧,那有些同老是有什么好处呢?好处是你将来这个DEMO04还有别的包。
04:16
你肯定不可能把所有的内容都写到这一个文件里面,对不对,你有可能还有在这个DEMO零式里面还有别的包,比如说我这再建一个包叫model。诶,那将来我的这个下面呢,你看这个DEMO04下面就有两个文件夹,一个是main,一点是model,那我将来呢,就可以把关于这个model的一些代码写到这个文件夹下面去,然后呢,我在这里面去用它不就完了吗?所以这种规范呢,呃,应该是更标准的那老师,呃,目前采用的没有跟他保持一致的原则,呃,原因是因为我就是为了授课方便,所以说我我没有写这么多,明白我意思吧,但是在开发中呢,我们尽量遵守包名和所在文件夹的名字保持一致的规则,能理解吧。
05:07
好的,我把这个呢给同学们写到笔记里面来啊,OK。叫做标识符命名的一个注意事项,整理到笔记中。朋友们,跟上思路。我呢,给他一个标题三。好的,报名第一个规范是报名的这个一个要求。对吧,报名的一个要求。好,这是报名的要求,比如说刚才老师举的这么一个案例,他就充分的说明了他是应该是怎么用更合理的。大家看到这里,我截一个屏。大家看这啊,我的目录结构这样子的。是吧,这个妹你看我这怎么做的呢。我把这个。这个这这个不是我们的这个文件夹吗。对吧,然后呢,我让这个文件夹这个包名你看。
06:04
这个包的名字和这个所在文件夹保持一一致,因为我现在是main点够,从这可以看出来,现在我是没点够对吧,没点够这个文件,所以说这样就符合他的这种规范了。保存一下到我的笔记里面,注意听哈,注意听。因为这个勾浪语言呢,跟很多很多一些传统编程语言啊,还是有些区别的,所以说大家注意这个地方,它既有C语言的特点,又又拥有像动态编程语言特点,所以说有些时候你还有点不习惯,但是呢,大家要跟上这个老师的讲课思路,第二个变量名,函数名,常量名呢,我们尽量使用驼峰法。啊啊OK,我把这个写到这里来。好,后面我会还具体说啊,那么我给他举个例子,举举例啊举例。比如说。比如说吧,现在呢,我要我要定一个实证类型的表示学生的名字,我怎么写呢,这样写。
07:03
We are student name string,比如说这个人的名字叫汤姆,你看这里就用到了一个驼峰法,什么叫做驼峰法呢?各位同学,什么叫做驼峰法呢?驼峰法就是说它的字母呢?呃,第一个字母的首字母是小写的,然后呢,第二个字母,第二个单词的首字母是大写的。这就叫驼峰法,就像骆驼的驼峰一样,你再比如说我再举个例子,比如说我现在要写这个。学生的,呃,比如说我们要定义一个商品的价格。固执。Price or6032位等于就它的价格是这么多。你看这地方,我也用了头风法,这地方是大写的。啊,这个是大写的,看到没有。这个就是。驼峰法就好像一个骆驼的驼峰凸起来了一样的感觉,是不是同学们这就是驼峰法啊,驼峰法就是这样子的一个意思,就是不同的这个单词之间呢,呃,这个第一个除了第一个是小写,其他的呢,就按大写来写,它的形式就这样子的形式。
08:18
是这样子的啊,比如说第一个好来好,然后是C。对对对等等等等等,这样子啊,这样子啊,这是变量函数常量名的投步法的命名的一个要求,再来看第三一个,如果变量名、函数名或者常量名的首字母大写,注意听这句话,则可以被其他的包访问,如果首字母小写,则只能在本包访问。那这句话呢,就体现出我们的构员,他在进行这个访问控制的时候,一个非常非常特殊的一个特性。也就是说其他的编程语言呢,你你比如说像Java,他用的是public protected,或者是私有的等等这种关键字来控制访问范围,但是呢,在构元里面,它是通过这个它的名字的首字母是否大写来控制是否可以访问。
09:18
有点奇怪对不对,但是呢,它就是这样子的,反而它简单了,它不要求你去学这些乱七八糟的东西了,对不对,所以说你可以怎么理解呢?你可以理解成首字母大写就是公有的。就是如果你这个这个标识符首字母大写就是公有的,公开的吧,叫公开。叫公开的,比如说类似于我们有些地方的关键字public。Public,那么首字母小写呢?各位同学,首字母小写呢?A,它就是私有的。它就是私有的。你比如说你比如说就有点类似于这种叫private。
10:00
好,这个呢,我给同学们举一个例子,注意听讲哈,我给同学们举个例子,注意听,这个是比较重要的一个特色。好,别的编程语言里面没有的一个特色,我给大家演示一个案例,注意听刚才呢,老师把这个再。标一下啊走。首字母是有的,OK,大写蓝色,OK好,它没有那个就是在在这个构元里面没有,嗯,没有这些东西了啊,那我把这个最好去掉,你这写着public,好像有同学认为就有这个关键字一样,反而我我本身说想说的没有这个结果呢,大家反而把这个错误的记住了啊,他没有什么呢,在构中。在go中啊,没有,没有注意听,没有,Public是有这些关键词。啊等这些关键词。它就是通过这个首字母的大小写来控制的,没有注意听我说的是没有啊,大家不要把这个记错了,我说的是没有。
11:02
啊,强调一下。那么我给大家举个例子说明吧,来,我给大家一个案例演示。案例演示一下啊。案例案例演示注意听,那现在老规矩,我们就还用刚才这个来说,比如说这有个main,我想去用model里面的一个一个变量来新建一个文件,比如说我的名字叫UTS点购。在这个里面呢,我们打一个包包。Package model。Model,然后呢,这里面我定义了一个变量,定义了一个变量,注意听这个变量呢,非常简单,我就写一个英雄的名字好不好,We are是hero hero name。He name。好,然后呢,等于时钟类型。十寸。
12:00
等于什么呢?给他赋一个值啊,比如说叫做宋江,没问题吧,大家看我就定好了,那现在呢,我有这么一个需求,我想在main.go里面去使用到UTS,呃,UTGO里面的这个宋江这个变量,我怎么用呢?大家看。我现在首字母小写,你看我能不能用到啊,来怎么样去用它,来根据老师思路走第一步,为了好看呢,我把整个用这个引起的啊。还是按我们以前那个方式。包起来简单一点。对不对,简单一点,诶写错了。那既然你要去使用到这个us go里面这个文件,你首先要把这个包引入,这个没有问题吧,我先引入这个包。啊,我先说一下啊。我我做一个注释。为了。为了使用使用这个uts,注意听点够文件的这个变量或者函数,如果有函数的话啊,我们首先我们需要先引入该包。
13:11
该包,那怎么引入这个包包呢?非常的简单。就这样,注意听大家看我的格式啊。首先呢,从你这个工作目录,你的工作目录现在是不是。Go project呀。这个src注意引的时候src不用写,直接从这个chapter就开始引,那就注意看我写,我就直接写吧chapter,比如说呃呃,Src下面有个go扣的是吧,对,从够扣的开始写go。Code。斜杠。然后呢,写上你的这个chapter。Chapter chapter0几零三再来零三,下面有一个叫DEMO04,你不要引错了啊,零四。代码零四,再引到这个model好可以了。
14:03
斜杠model。同学们,这个就叫引入了这个包。明白,这就叫引入这个,因为你本身按理说其实应该是这样写的啊,如果按照这个绝对路径的话,你应该是这样写,应该应该是从这个project,比如说你这个地盘。下边go。Jack,斜杠下面src,然后这样,但是呢,因为我们这个前面这一部分的工作,我们不是我们不是配了一个go,我们不是配了一个go pass吗?还记得吧,Go pass,其实这个go pass已经指到这了。是这意思吧,大家回忆一下。那么你配到这,你前面这一部分就不用写。你不用写呢,再加上这个src本身就是一个默认的,就是它自动会给你加一个src,所以SC也不用写了,所以最后呢,保留的其实就是这么一部分,能理解吧。
15:01
好,说说大家是怎么来的啊,我就给大家说清楚了,这个就引入这个包了,引入这个model包了啊,比如说我们引入了model包。Model一个包。矛盾。好的,我们引入这个这个包了,实际上就是引引到他这个文件夹,引到他这个文件夹了,能理解吧,好了,那现在我用logo,现在我去使用它一下啊,我们使用一下这个UTSGO的电量。最近这个我们叫做hero。Here name,那么现在我们打印一下print怎么用呢?用的时候实际上就是包名,点包名点这个变标识复名。如果你是函数,那就写啊,这个函数好的,那现在呢,我们要用的是包名叫model,没问题吧,Model点好的它的。名字叫hero。复制一下,注意是用包名来点这个变量啊,跟这个跟这个uts文件名没有关系,能理解吧,你不要乱写啊,写完写完过后呢,我们来运行一下,看到这个时候有没有报错,好像没有报错是吧,好像没报错,诶已经报错了,大家看到已经提示错误了,我们看看它提示一个什么样可爱的错误呢?大家看这里。
16:18
他说cannot refer to on export,就说这个是不可导入的一个变量。这个是不可导入的意思。它这个name不可导入,为什么呢?就是因为你这个H是小写的。我们刚才讲过,刚才讲过一个特别重要的一个原则,就是说如果你首字母小写,那么它就不能够。在其他包使用,你看我记得啊,如果首字母大写则可以被其他包访问,看这里。是不是大写可以被其他保护?如果手中的小写,则只能在本包使用。那么你想一想,刚才老师这写的hero,你这个在这个包包里面,你又是小写的,所以说在main这个这个文件的这个包下面用不了,那怎么办呢?非常的简单啊,我也不用去运行了,你运行也运行不出来。
17:10
我可以给你试一下。DEMO。零四。我进去啊,你们来看我勾一下run。点够注意听这很重要啊,你看这个地方直接告诉你。啊,这不对啊,对某哦,因为我下面建了一个新的面包,看啊DRDR里面是不是这个我们分了两个包包,一个面,一个model啊,是不是这个文件夹和这个文件夹对不对,CD到me。进去go wrong命点go没问题吧,一会车你看他报的错误。是不是跟那个一样,Cannot refer to报的错误是不是这个。Cannot refer to unexported就是不可导入的一个name name。因为它是小写的,那解决方案非常简单,因为这这就反而证明它是私有的了嘛,对不对,它是不可以被别的包使用的,那要用的话非常简单,只要把这个H改成大写的,一切OK,大家看,当我保存完了过后代码就。
18:11
当然这个地方也要改成H了,对不对?改完了再跑一下,同学们看宋江就会打印出来。没问题吧,你看我们用到宋江了。明白了吗?好,这个就是我们所说的这个变量名,或者叫标识符的名字,大小写的一个很重要的区别,如果是大写,那就是说可以挎包使用,也叫可以导出的变量,如果是小写,就是只能在本包使用,也叫不可导出的变量。好的,那关于这一点呢,我们把笔记给同学们补一下。好,同学们注意听啊,我举了一个案例,怎么一个案例呢?这个案例是这样子的。同学们看到啊,在这里。哎,首先我们建的一个目录是这个样的。
19:03
对吧,诶我们这这个就不用截了,我们直接截一个这样的东西,就是把这个拿过来看是怎么引用的啊。好,看这里。这儿。我们的目录目录结构是这样子的,看到啊这两个包包,一个是这个包。我表现。注意听啊,注意听。换一个颜色吧。这有一个部分。没问题吧?也有一个部分。啊,这个地方这个地方太太粗了,换一个换一个浅一点的颜色。还没有我这个妹。这个main就是对应这个文件,现在这个main呢,对应这个文件。看到没有?我在这个地方写了一句话。这个是干什么的呀,这个就是把这个包引入了对不对,那么我用的时候怎么用的词呢?我是这样用的,大家看这里。
20:00
专用的。实际上就是包名加标标识符,这个标标志写错了啊,标识符使用的,那这是第一个地方。这是第一个地方,我把它先放这儿。第一段核心代码,还有一个呢,就是我的may,这个u tr,这个是怎么写的,我把这一部分代码也给同学们放到笔记里面来,再看这里,这个就简单了。你看这个就简单简单很多对吧。把它稍微的收一下啊。看起来好看一点,来看这儿。这个地方我是怎么写的呢?这个地方我是这么写的。大家看到这里,这。是我们的目录结构,其中有个uts就这样写的。啊,这是我们uts这个文件,看到没有好他们之间的关系引用关系呢,刚才老师就说的比较清楚了。好的。源代码到时也会分分享给大家啊,这这两个图大家一看就非常清晰,是怎么引进去的?
21:05
好,我把这个呢放的再小一点。好,把它放在一个啊,一个页面就可以了,大家看能不能理解啊,就说白了就是你的这个main.go引入了这个model,然后呢,就可以用model里面的变量hero了。那么这两个文件呢,是在不同包里面,好好好的理解一下啊,好好的理解一下,好同学们,那关于标识符使用的注意事项呢,就是这三点,大家要把它记得牢牢的,因为后面我们在呃做项目的时候会经常用到这个知识点。那关于它的使用注意事项,我们先给同学们介绍到这里。
我来说两句