开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:包的引出和使用原理】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/625/detail/9593
包的引出和使用原理
内容介绍:
一、包的引出
二、包的介绍
三、包的原理
一、包的引出
把所有函数写在一个地方会怎么样呢?所有代码推在 main 里面,合适吗?
这有一个 main.go 的文件,里面有一个函数 func cal()....
在里面的主函数呢,调用cal函数。
思考,我们会不会有这样的需求.
func cal()....
有一个函数 func cal2()....
func cal()....
func cal()....
问题来了,我们能把所有函数都定义到 main.go 里面吗?
从理论上说是可以的,但是一个大项目里面函数有成百上千,能把这么多函数写到一个文件里面吗?
显然是不行的,这样新的问题就来了:如何把这么多的函数写到别的地方,然后在调用。
假如有一个新的文件:
utils.go//专门用于定义常用函数,让其他文件来调用。
只要他有//引入 utlis.go 的 cal 函数就可以了。这是一种机制,我想用谁,就把他引入到相应的文件用就行了。
这种需求呢是很多的,我们不可以把所有函数放在 main.go 里面。所以我们可以把常用的函数写在一个专门的文件里面。甚至可以写在其他文件,不是只写在这一个,还有很多文件。
还可以新建一个文件,专门用来对数据库的操作。
Db.go//专门定义对数据库操做的函数。
相当于说别类的函数写在对应的文件里面,要用的时候引入对应文件使用机就好了。
这个时候就用到了新的知识点:
第一个叫:包;
包的作用就是达到这种效果,可以别类的把各个函数,需要的功能分散到不同的文件里面去,然后需要用的时候直接引入就可以了。
二、包的介绍
1.在实际的开发中,我们往往需要在不同的文件中,去调用其他文件的定义函数,比如 main.go 中,去使用 utlis.go 文件中的函数,如何实现?(这就是上面所讲解的东西)
2.现在有两个程序员共同开发一个 go 项目,程序员小明希望定义函数cal,程序员小强也想定义函数为 cal,两个程序员为此还吵了起来,怎么办?(这个需求是安全有可能的,因为一个项目很大,一个人很难完成)
在同一个文件里面是不能定义相同的函数名的,因为是会报错的。
所以就用到了上面的机制。
假设 utlis 是小明写的,Db.go 是小强写的,那么已经不在同一个文件里面了,也就是说不在同一个包里面了。
两个都定义函数为cal,怎么区分呢,还是用到了“包’。很明显,这两个已经引出了”包’的必要性了。
包的第二个作用:可以进行项目的管理
比如说让二人建一个包,个人在自己的包下面写自己的代码,这样也不冲突。
三、包的原理
包的本质就是创建不同的文件夹,来存放程序文件。
比如说这个 main.go 在一个文件夹下面,将 utlis 放在同一个文件下面,
再创建一个 utlis.go,再同一个文件建立一个 db 包,在 db 包再建立一个 db.go,这样子就把文件分开了。