包的引出和使用原理|学习笔记

简介: 快速学习包的引出和使用原理

开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:包的引出和使用原理与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/625/detail/9593


包的引出和使用原理

内容介绍:

一、包的引出

二、包的介绍

三、包的原理


一、包的引出

image.jpeg

把所有函数写在一个地方会怎么样呢?所有代码推在 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,怎么区分呢,还是用到了“包。很明显,这两个已经引出了”包的必要性了。

包的第二个作用:可以进行项目的管理

比如说让二人建一个包,个人在自己的包下面写自己的代码,这样也不冲突。


三、包的原理

包的本质就是创建不同的文件夹,来存放程序文件。

image.png

比如说这个 main.go 在一个文件夹下面,将 utlis 放在同一个文件下面,

再创建一个 utlis.go,再同一个文件建立一个 db 包,在 db 包再建立一个 db.go,这样子就把文件分开了。

相关文章
|
8月前
|
缓存
KVCache原理简述
KVCache原理简述
213 0
|
2月前
图解一些网络基础知识点
Ethernet以太网IEEE802.3 以太网第一个广泛部署的高速局域网; 以太网数据速率快; 以太网硬件价格便宜,网络造价成本低。
29 4
|
7月前
|
存储 C语言 C++
一文搞懂:世界上最神奇的mif文件生成方案
一文搞懂:世界上最神奇的mif文件生成方案
82 0
|
8月前
|
存储 监控 算法
JVM工作原理与实战(四十一):ShenandoahGC原理
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了ShenandoahGC、ShenandoahGC 1.0版本、ShenandoahGC 2.0版本、ShenandoahGC执行流程等内容。
67 0
|
8月前
|
运维 网络协议 安全
第一节-网络的基本概念
第一节-网络的基本概念
84 0
|
8月前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
100 0
|
算法
100个经典c算法 | 程序源码
100个经典c算法 | 程序源码
63 0
|
算法 Java 测试技术
我的算法基础实验代码-下篇
算法题目,Java语言版
80 0
|
存储 Kubernetes 监控
【k8s 系列】k8s 学习二十七 - 4,k8s 自身原理 4
前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧
153 0
|
Kubernetes API 调度
【k8s 系列】k8s 学习二十七-2,k8s 自身原理 2
前面我们说到 K8S 的基本原理和涉及的四大组件,分享了前两个组件 etcd 和 ApiServer 这一次我们接着分享一波
125 0