GO语言(二十五)管理依赖项(上)
当您的代码使用外部包时,这些包(作为模块分发)成为依赖项。随着时间的推移,您可能需要升级或更换它们。Go 提供了依赖管理工具,可帮助您在合并外部依赖项时确保 Go 应用程序的安全。
本主题介绍如何执行任务以管理您在代码中承担的依赖项。您可以使用 Go 工具执行其中的大部分操作。本主题还介绍了如何执行其他一些您可能会觉得有用的依赖相关任务。
使用和管理依赖项的工作流程
您可以通过 Go 工具获取和使用有用的包。在 pkg.go.dev 上,您可以搜索您可能觉得有用的包,然后使用go命令将这些包导入您自己的代码中以调用它们的功能。
下面列出了最常见的依赖项管理步骤。 在pkg.go.dev上找到有用的包。 在代码中导入所需的包。 将您的代码添加到模块以进行依赖跟踪(如果它不在模块中)。 添加外部包作为依赖项,以便您可以管理它们。 随着时间的推移,根据需要升级或降级依赖版本。
将依赖项作为模块管理
在 Go 中,您将依赖项作为包含您导入的包的模块来管理。此过程由以下机构支持: 用于发布 模块和检索其代码的去中心化系统。开发人员使他们的模块可供其他开发人员从他们自己的存储库中使用并使用版本号发布。 一个 包搜索引擎 和文档浏览器 (pkg.go.dev),您可以在其中找到模块。 一个模块 版本编号约定 ,可帮助您了解模块的稳定性和向后兼容性保证。 Go 工具 可以让您更轻松地管理依赖项,包括获取模块的源代码、升级等。
定位和导入有用的包
您可以搜索pkg.go.dev以查找具有您可能觉得有用的功能的软件包。
找到要在代码中使用的包后,在页面顶部找到包路径,然后单击复制路径按钮将路径复制到剪贴板。在您自己的代码中,将路径粘贴到导入语句中,如下例所示: import "rsc.io/quote"
在您的代码导入包后,启用依赖项跟踪并获取包的代码进行编译。
在代码中启用依赖项跟踪
要跟踪和管理您添加的依赖项,您首先要将代码放入其自己的模块中。这会在源代码树的根目录创建一个 go.mod 文件。您添加的依赖项将列在该文件中。
要将您的代码添加到它自己的模块中,请使用 go mod init命令。例如,从命令行切换到代码的根目录,然后按照以下示例运行命令: $ go mod init example/mymodule
该go mod init命令的参数是您的模块的模块路径。如果可能,模块路径应该是源代码的存储库位置。
如果一开始您不知道模块的最终存储库位置,请使用安全的替代品。这可能是您拥有的域的名称或您控制的另一个名称(例如您的公司名称),以及来自模块名称或源目录的路径。
当您使用 Go 工具管理依赖项时,这些工具会更新 go.mod 文件,以便它维护您的依赖项的当前列表。
添加依赖项时,Go 工具还会创建一个 go.sum 文件,其中包含您所依赖的模块的校验和。Go 使用它来验证下载的模块文件的完整性,特别是对于在您的项目上工作的其他开发人员。
在代码中包含存储库中的 go.mod 和 go.sum 文件。
命名模块
当您运行go mod init创建用于跟踪依赖项的模块时,您指定一个模块路径作为模块的名称。模块路径成为模块中包的导入路径前缀。一定要指定一个不会与其他模块的模块路径冲突的模块路径。
至少,一个模块路径只需要表明它的来源,例如公司或作者或所有者名称。但是路径也可能更能描述模块是什么或做什么。
模块路径通常采用以下形式: / prefix 通常是部分描述模块的字符串,例如描述其来源的字符串。这可能是:
1、Go 工具可以在其中找到模块源代码的存储库的位置。
例如,它可能是github.com//.
如果您认为您可能会发布模块供其他人使用,请使用此最佳实践。
2、一个你控制的名字。
如果您不使用存储库名称,请务必选择一个您确信不会被其他人使用的前缀。一个不错的选择是您公司的名称。避免使用常用术语,例如widgets、utilities或 app。 对于descriptive-text,一个不错的选择是项目名称。请记住,包名称承担了描述功能的大部分内容。模块路径为这些包名称创建一个命名空间。
保留的模块路径前缀
Go 保证以下字符串不会在包名称中使用。
1、test– 您可以将test用作模块路径前缀以便代码用于在另一个模块中本地测试功能进行测试。
使用test作为模块路径前缀是测试的一部分。例如,您的测试本身可能会运行go mod init test,然后以某种特定方式设置该模块,以便使用 Go 源代码分析工具进行测试。
2、example– 在某些 Go 文档中用作模块路径前缀,例如在创建模块以跟踪依赖关系的教程中。
请注意,Go 文档还用于example.com说明示例何时可能是已发布的模块。
不止30亿补贴!iQOO和vivo这个双11有点猛,你准备好了吗?双11即将到来,各家手机厂商都在紧锣密鼓地准备着,双11是大家买手机不容错过的时机,有些时候确实真的不夸张的说错过再等一年。目前很多手机都已经发布,诸如vivoiQOO小米OPPO
全部满足!vivoT1一张图了解一下,双11的新宠儿我们知道在手机圈,一个手机厂商推出的全新系列的时候,我们可以真的闭着眼睛去买,比较作为全新的系列,第一款手机一定是极具代表性的,不管是价格上,还是手机本身,都是经得起比较的。在双1
好评如潮!iQOOZ5首销三连双料冠军,你贡献了几台呢?今天是假期的前一天,很多人忙着回家,也有很人忙着准备去旅游。近期的手机还是非常多的,大家应该会买一些手机算是礼物送给自己,那么问题来了,你们买的哪款手机呢,其实笔者前两天就有推荐一
大数据时代如何炒股大数据时代炒股犹如裸奔,只要愿意钞钞钟便可知晓谁在拉高谁在砸锤,但前提是谁掌握大数据。在小散多如牛毛的A股,能有大数据支持并有跟踪的一些机构及基金,汇金,证券公司是掌握这一抓手的的
不容错过!iQOOZ5x到来,5000大电池120Hz高刷最近双11又成为了大家的焦点,很多人也开始攒了不少钱包,鼓鼓的,方便双11剁手,当然笔者也准备了一些,毕竟多少都会便宜一些哈。双11最热闹的还是是手机圈,当然目前已经又很多手机发布
股市应注重生态建设(一)股市开办已三十多年,虽不敢说对藏富于民有多大作用,但对国家的发展却贡献巨大。眼下正是对股市进行改革建设时期,千万不能一味去照搬国外的方式方法制度,因为社会的制度差异,必然造成各种意
股市应注重生态建设(二)二是股市生态建设应尊重自然规律,保护生态平衡。大自然之所以一切生物自然和谐生存,是因为其内在的规律使然,动植物链的休憩与共,终老病死的相互扶持,组成了一个五彩缤纷的群体,构成了一个
大数据学习需要学历吗?大数据学习需要学历吗?近年来,随着大数据市场规模的增长,很多人看到了藏在大数据之中的机遇,非大数据行业的小白想要进入到这一行业选择学习大数据技术,有的学历不够高的就会问到这么一个问
大数据编程入门Java包为了更好地组织类,Java提供了一种包机制,今天小编将为大家带来大数据编程入门Java包(Package)这篇文章。一包的概念包是类的容器,用于分隔类名空间。如果未指定包名,则所有
大数据编程入门Java序列化在Java中提供了一种对象序列化机制,今天小编将为大家带来大数据编程入门Java序列化这篇文章来介绍序列化及反序列化。一序列化概念Java提供了一种对象序列化的机制,在这种机制中,
大数据编程入门Java网络编程如果想要编写出一个可以运行在多个设备上的程序,应该怎么做呢?答案是网络编程,今天小编将为大家带来大数据编程入门Java网络编程。一网络编程概念网络编程是指编写在通过网络连接的多个设