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

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

开发者学堂课程【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,这样子就把文件分开了。

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1093 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1770 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
701 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
663 13
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
459 5