00:00
那现在呢,我们来看一下包的基本概念和包的使用啊,包的基本概念和包的快速入门,那这样看一下来看,刚才呢,我们已经把包包的引出,就是为什么需要包,以及它的一个基本原理给同学们说清楚了,对吧?现在呢,我们看一下它基本概念,在系统说一下合围包go的每一个文件都属于一个包。这点大家一定要记住哦,也就是说,Go是以go语言,它是以包的形式来管理文件和项目目录结构的。也就是说,我们每一个文件都出一个包。这一点大家也要清楚,如果你一个文件部署一个包,它是不可能的,明白这是一个基本概念,我们先把它放到这来,这是第一个需要同学们了解的包的基本概念。那现在我们说包的介绍对不对?包的基本概念?OK,那么包的基本经验。好包的基本概念,好,那现在呢,这样子,我们把这个标题啊,这样子稍微的整理一下,这是。
01:03
还来一个标题二吧。OK,然后包的基本概念是什么呢?刚才老师已经给他说了,对吧。这点大家非常明确,没什么可说,第二个呢,下面接着再看,那那么包的作用有哪些呢?简单说一下,刚才其实已经说过了,这里再总结一下第一个包的第一个作用是区分相同名字的函数、变量等标识符。大家刚才讲过,在不同的包下面,我们的文件可以写相同的函数名。甚至变量名也是可以相同的。第二个,当程序文件很多时,可以很好的管理我们的项目。可以很好的管理我们项目,因为大家都知道我们不可能把所有的文件,把所有的函数都写在一个main点构里面去,这是不现实的,我们必须要用一种包的形式,把所有的文件分门别类的放好,比如说model包、service包、U包等等,是不是可能要用包的形式的管理项目。第三个包还有一个作用,这里面这地方呢,待会会涉及到,就是它可以控制函数变量的访问范围。
02:08
及作用力。具体怎么做,待会再说,就是包有三大作用,大家要要有印象,前两个作用呢,其实大家很容易理解,就是包还可以控制。函数和变量的访问范围。这点大家先有印象,那么包还有什么?包的这个具体使用有两个特别重要的指令,一个是打包指令,叫package。U package后面这个包名啊,这个包名这样写比较好,包名你比如说同学们看,在我们前面写过的这个里边,你看package me这个就是打了一个包。这个命就是他的包,米能理解就是命包。好,那现在呢,引入一个包又怎么用呢?比如说我们要去用在一个文件里面,用另外一个包的函数或者是变量,咱们怎么做呢?就import就引入,具体来说就是刚才我们画的这个图,你看刚才这有一个UTGO文件,它放在u tr包的这个DB.go放在DB包的,那我想去用,比如说我想去在main点勾里面用到UT这个包包下面的这个文件的。
03:18
这个c hello函数我怎么用呢?非常的简单,一句话的事就import。Import。注意啊。Import,然后呢,写上我要引入的包的路径,就是比如说UT包路径。这个路径怎么写,待会儿我还要具体的说引进去,引进去过后各位同学你在这调用的时候呢,就可以使用到c hello,怎么用呢,非常简单,调的时候是高明。第2c hello,玩火啊C哈。C hello,当然这个时候呢,因为我这个S是小写的,还不能这么用,这个地方如果你是小写啊,调不了,还得用大写的S才能调好,待会我们还要讲这个细节,明白吧,如果是你的函数名是小写,还不能挎包使用。
04:08
这就是体现出包还可以控制我们函数的访问范围。如果你要在这个文件,因为这个文件这个men,这个main点歌它是在哪里啊,它是在main包里面的,待会我会具体说啊,这个包里面的,那么如果说你要在main包里面要用到u tr包里面的函数,那需要我们这个函数首字母大写。啊,大家可能现在还不知道,待会儿呢,在演示案例的时候就会逐渐的加深这个认识,好的这个呢,就是我们说到他的package和import这两个指令,下面呢,就顺理成章我们来一个快速入门案例,这个案例呢,我们就以刚才讲的这个方式,就是我们就围绕刚才这种方式来完成好不好?来吧,我把刚才这两点给大家打包说一下,一个是。包的作用,还有包的相关指令。
05:00
我把它整理到笔记里面去,好吧。我成列到笔记里面去,第一个是包的作用。报的作用。好,第二个呢,我们讲了一下包的相关指令。也来一个标题二那一个,一个是打包基本治理,对不对,打包的基本治理。引入包的基本指令。好,大家可能现在还有点抽象,现在呢?好,好了,我们来一个快速入门案例。包使用的包使用的快速入门力。啊,快速入门。理解,来吧,我们来一个快速入门的一个演示,那么我们就这样做啊,来,我们先说一下我们快速入门的需求是什么,我们这样做,呃,我们将function开了,开了这个CL就是计算的一个方法,定义到UT这个文件里面,将UUTS点购放在这个包中。啊,放在这个u tr包里面去,当其他文件需要使用到UTSGO的方法时,可以import包就可以使用了,我们演示一下,在这个过程中,我们这样子,我们要把刚才这个项目的结构做一个小小小小的调整。
06:14
那案例已经有了。我们就针对它来实现最新讲啊。那具体来上来说这个代码,看代码演示。最新奖这块比较重要,那同学们看到,因为目前我这个function DEMO里面只有一个点go。是吧,闷点购,那这个时候显然是不好管理的,假设呢,我们我们我们要实现这个效果的话,我得我得把这个闷点购放在一个独立的闷包里边去,注意听我现在开始来做它的一个处理了啊,注意听我要做它的处理了。注意跟上思路,看我怎么一步一步把它就处理完毕的。来了。首先,假设你可以把它理解成,把这个function demo01理解成,理解成是一个项目的名称。
07:00
理解吗?好,现在我开始做了第一个,我先建一个文件夹,注意听面包。然后呢,我将这个闷点垢移到面包里面去。大家看能理解吗?也就是现在在这个function,呃,Function demo01这个文件夹下面有个面包,然后我们再见。在这个这个包包下面,我们建一个新的文件夹,叫uts。注意听讲,然后在这个这个包包下面,我们新建一个文件叫UTS顶购,好,这个UTS顶购就有点类似于我们这个示意图里面的。这个文件,而且把它放在u tr这个包文件夹下面了,那么这个时候我们上来先打一个包包。Package uts。这就是打包指令,然后呢,我把man.go里面的这个方法,注意,听我把这个方法啪拿走。移植到。因为我们讲,我们刚才讲过,不可能说把所有方法都定到这里面嘛,所以说我把它剪切走了。
08:02
捡走了。过后我把它放在这个包包里面去。看到当然这个时候,这个时候大家注意这个函数的名就要小写了啊,就要大写了,这个C必须大写。那为什么要大写,后面我还会提到这个概念,因为如果你不大写的话,各位同学你即使引入了啊,就是你在这即使引入了u tr,你即使引入了这个u tr这个包,你也用不了这个函数,因为小写代表私有。啊,后面我们还会反复说这个概念能理解,所以说我先把这个名字呢,改成大写的C。OK,好,我再说再简单说一下吧,啊,为为了为了让别的包其他包吧,其他的包的文件使用,使用这个CL这个函数需要需要将什么呢?C大写。大写类似于什么其他语言的啊,类似其他。类似其他编程语言的public。
09:02
类似啊,类似其他语言的。语言的public,那么在我们的勾勾浪里面呢?它有个专业的术语叫做该函数可导出。再说一遍啊,在勾勒里面把字母,把这个字母大写,它有个专业的术语叫做该函数可导出。这就是他的一个专业术语,OK,好,那这写完了啊,写完过后呢,同学们看,这个时候我一写完我们保存。保存过,显然这个代码一定会错。大家知道为什么错吗?显然会错,他立马会告诉你,这个函数没有定义过。果然他说on find CR,显然你你这没有定义,你你又没有引入,他肯定用不了吗,这个道理就好像刚才说的,诶,你在这写完了过后,你又不把你家把这个包包引进来,你怎么可以可能用这个c hello呢。是不是一样的道理啊,那现在我们要引入这个包包来走一下,引入的时候注意看老师怎么引。注意听讲啊,这块比较重要。好,我在引入的时候,这个指令呢,要这么去写。
10:03
这这个路径有点长啊,因为我们这个我们这个路径写的比较多,他是从这个src下面开始,就说从这个go pass的路径下面的src开始往下写,但是不用写src,后面这个细节我还要还要还要说的,就这样写了go。Code就是从src这个目录下面开始写,因为它默认就是从src下面开始来定位的,能理解吗?好的,开始写了啊。斜杠。斜杠下面我们要引入到这个这个包,引入到这个UR包,所以说功能写的各位应该写CHAPTER06,注意听啊,Chapter。CHAPTER06。好,这还没完事啊,接着往下再再走,再走的话呢,就再引入到这个包,呃,这这个文件夹叫function demo01。因为我这个路径比较长啊,刚好大家接触一个比较复杂的对吧,DEMO0一再接着往下走,因为DEMO0001下面呢,才有这个UTS这个包所是UTS。
11:08
到此为止,写完写完了过后呢,在调用的时候注意听你这样调用也是不行的啊,你得怎么调呢?各位同学调用的时候,刚才我已经讲过了,是包名点函数名,包名是UTS,第二函数名是C。保存。好,同学们看这个时候好像就没报错了。那么下面是不是也是可以用的,诶,他报了一个错,他报了什么错,我们看看。报了一个什么错,在这里报了一个错。呃,他说package u这个为什么会报错啊,这个不应该。处理一下。好了。这个地方有个问题,大家看到没有,因为你在这个函数里面用了,在这个文件里面又用了打印,那你是不是你本身也应该引引入这个这个包啊。谁吧,哪个包是不是不卖这个包保存。
12:01
好保存完了过后看这边就没报错了,再进到这边来。这边来过后呢,你看他也没有报错,但是这也是,是不是你这调是不是也得改一下呀,是不是一样一样这样调改一下。好,改变。改变完了过后来朋友们,我们现在试用一下,看能不能用了,看能不能用了,注意听。现在到底能不能用还是一个未知数,我们来跑一下,保存一下,全部保存。全部保存了,现在目前好像没有报错对吧,没有报错好,为了能够让大家感受到确实变化了呢,我把这个result加一个波浪号,这是我的小技巧,就是你尽量在代码做了改变过后,让输出也有一定的改变,不然的话到底改没改,生没生效,你还你你你还心里面不不敢。不敢肯定的,好了,来吧,我们现在来跑一下。CD。我们,我们DR进入到may。OKDR,是不是刚才我们把门放到这里面了,运行一下go run men.go好。
13:04
各位同学请看效果完全都problem,你看现在我们result等于3.5 result第二个是相乘嘛,等于30点多少,这个我没有做精度的处理,所以说他把精度保存的比较高,后面的我们写个函数一下,就说在输出的时候很很简单就能解决问题啊,老师我想我想不要不要写那么多,写个保留一点小数位可以很简单非常简单啊,你可以这样写来一个百分号点。2F,那这样子的话呢,告诉大家它就保留到小数点两位了,明白这意思吧,这样写法就是点儿零二这个地方不要说老师告诉大家,其实你看手册就能看得非常清楚。教大家一个方法啊,我在说始终是方法很重要,不是说老师告诉大家你就会,老师不告诉大家你就不会,那么老师是怎么知道这样写就可以了呢?因为我看手册了啊,看手册来。带大家看一下首页,你看这个地方,它其实呃,Format找到format format里面它写的很清楚,你看这大家看这里。
14:06
看这。第二。百分号点二默认宽度精度为二,就是保留小数点两位,如果你要保数点小数点小数点三位一样的,其他看9F 9.f又代表什么意思?是不是很很容易理解啊?不,9.f就代表宽度为为为九,精度为零,就是没有小数点吗?去掉小数点,我这保留小数点就是点二,当然也可以写点3.4.5对不对,好,我们来跑一跑,现在是不是保留到小数点两位了,跟上思路。跑起来走人。看效果是不是30.05。完全都泡。所以同学们看啊,我们一个就是我们所说的,用了一个包的方法来封装我们的管理我们的函数的案例就说完了,大家看能不能理解。这是一个快速入门,也比较简单,对不对,那那后面的细节呢,我们再待会再展开讲解,同学们先把笔记整理一下,我们怎么做的呀。
15:05
来跟上思路,那刚才我们做的时候呢,首先要把第一个图截下来,就是我们这个项目的这个这个目录是怎么管理的,对不对?好,我先把它放到这第一个我们项目目录结构做了一个处理。怎么处理的呀,大家看这里。能理解吗?这个地方其实我们是这样管理的。这有一个包包闷包,这个u tr包里面有闷点,Go u tr go,好,我们对目录进行了一个改进,因为这样才能进行包的管理嘛,啊第一个我们对目录做了一个处理。这个地方第二个呢,我们man,我们这个UR包是怎么写的这个文件。这个文件我们是这样写的,大家跟上思路打开它怎么写的呢?是这样写的。我把这个都给大家写清楚,然后同学们呢,就可以照着老师的思路来完成它,看到没有。注意啊,同学们,你为了让别的人能够使用到你的函数,这个要怎么样,要大写。
16:05
如果你小写是不能不能调用成功的啊,你可以试一下,如果你这写成C,它会告诉你该函数不可导出,那我我待会儿可以给大家试一下。因为老师讲课的时候,老担心大家哪个细节没有掌握到。啊,虽然后面大家都会知道,但是呢,我还是想及早的告诉大家,你比如说同学们看,假设我把这个写成小写了。那当然我写成小写,这边调的时候肯定也是。这样写。这样是不是也行,但是你执行的时候,你看啊,当我一保存,它马上会提示一个信息。大家看它会提示什么信息啊。大家看是不是这两个标标准红色波浪线了,它提示的信息是这个,他说cannot refer to UN exported name u is.com,他的意思就是说什么呀,他说诶你我不能指向这个不可导出的这个函数on expert就是不可导出吗?对吧,不可导出了,那你他就认为这个相当于认为这个函数没定义过。
17:05
因为你这个这个小写手中的小写,这就代表私有,私有的是不可以挎包被访问的,能理解吗?啊,这就是说我们刚才讲的那一点,包其实也可以用来做访问范围的控制。就是这个地方引出来的,OK,好,我现在还是把它改回去好不好?改成C,大写的C这边呢,咱也把它改成大写的C,能理解。好保存,我们将其全部保存。就没错了。好的,这是刚才我们截取的这个就是UTS点购文件,下边呢,我们还有个main点购文件,对不对,Main点购文件呢,老师也把它整理一下,放在哪里呢?诶我们放在这里的。对吧,主要是这要很重要,这是引入我们包的一种方式,对吧,那么调用的时候呢,大家可以。可以看是怎么调用的。我把这一段代码也给大家放到这儿,把核心代码放一下就行了,这块说一下,这个叫导入我们的包包。
18:08
是从src下面开始导的啊,就是叫导入包,没问题吧,这个叫导入。因为大家第一次接触,所以说我讲的稍微慢一点啊导入。导入包。是从src开始算的,那调用包里面的函数又怎么调用的呢?大家看这里。这儿就是我们的调用。它调用的时候其实就是包名点函数名。这是调用。对不对,就是调用。调用什么调用啊,这个函数函数。方式是报名。报名第二函数名。当然,这下面该写该填什么参数,你还怎么填就行了。保存起来,放到我们的笔记里面去,没问题吧?OK。好了,同学们,那关于包的一个快速入门的使用,我们就先给大家讲到这里,那下面自然就是按照韩老师的讲课风格,下面是不是该深入的去讨论一下包的使用细节了,是不是当我们把包的使用细节再聊一下的话,你会突然感觉到,哦,包我掌握了,我要的就是这个效果。
19:19
OK,我们包着快速入门,先给大家介绍到这里,同学们可以自己也写一写这种代码。
我来说两句