GO模块:初学者指南。
#初学者 #编程 #go #motivation

GO模块是在GO 1.11中引入的GO项目中管理和组织依赖性的一种新方法,并成为GO 1.13中的默认值。如果您不熟悉开发,则“ 依赖关系”是您项目需要运行的一部分,类似于构建块。 GO模块使在您的项目中添加新模块变得简单,添加依赖性更新,将其升级到较新的版本,并删除不再需要的任何内容。如果您是新手进入模块并想了解基础知识,那么该初学者的教程将引导您完成所有需要知道的步骤。

GO模块是管理GO项目中依赖关系的工具,对于任何GO开发人员来说都是至关重要的。但是,如果您是新手,知道从哪里开始可能会很具有挑战性。这就是为什么我制作了此GO模块初学者指南的原因。在这篇文章中,我们将浏览以下基础:

1。创建一个新模块:

一个模块是一个go软件包的集合,该包在其根部具有“ go.mod”文件的文件树中。在此阶段,您将学习如何在GO项目中添加新模块。

2。添加依赖性:

依赖关系是您项目需要运行的代码。在此步骤中,我们将教您如何使用GO模块为您的项目添加新的依赖性。

3。升级依赖性:

依赖项可以更新以提供错误补丁,性能增强功能和新功能。在此阶段,我们将教您如何使用GO模块将依赖项升级到最新版本。

4。添加对新的主要版本的依赖性:

新的依赖性版本可能具有与旧版本不相容的重大修改。在此步骤中,我们将教您如何将依赖关系升级到新的主要版本。

5。将依赖性升级到新的主要版本:

当您将依赖关系升级到新的主要版本时,您可能需要更改代码以确保兼容性。在此步骤中,我们将教您如何将依赖关系升级到新的主要版本。

6。删除未使用的依赖性:

从长远来看,您可能不需要对项目的依赖。在此阶段,我们将教您如何使用GO模块删除未使用的依赖项。

在本初学者指南结束时,您将掌握GO模块的基本原理以及如何使用它们来管理GO项目中的依赖项。

现在,我们将用详细的解释逐步将所有内容分解。

创建和测试新的GO模块:

在GO编程语言中,模块是可以与其他开发人员共享并共享的相关软件包的集合。模块的软件包是在目录层次结构中组织的,并且模块本身由模块的root目录中的名为go.mod的文件定义。 GO模块通过允许开发人员指定其依赖包装的版本来改善使用第三方代码的经验。

现在,假设您要在GO编程语言中创建一个新的模块。这是创建和测试新模块的分步指南:

  • 在计算机外部的$GOPATH/src目录之外,在计算机外部的计算机外部创建一个新目录

  • 在命令提示或终端中,通过运行以下命令导航到新目录:

 $cd /path/to/your/new/directory
  • 在新目录中,创建一个名为 hello.go.go 的新文件,并添加以下代码:

Image description

_此代码创建一个返回字符串的函数“ Hello,
世界。”当称为._

  • 现在,我们需要测试Hello功能。在与hello.go同一目录中创建一个名为hello_test.go的新文件,并添加以下代码:

Image description

此代码通过将函数的实际输出与预期输出进行比较,即Hello, world.

  • 在这一点上,我们创建了一个软件包,但不是一个模块。要创建一个模块,我们需要运行go mod initcommand。运行以下命令:
go mod init example.com/hello

此命令在当前目录中创建一个新模块,并生成一个GO.mod文件指定模块的名称和依赖项。

  • 运行go test命令测试模块:

进行测试

此命令将运行我们在步骤4中创建的测试并输出结果摘要。如果测试通过,您应该看到一条消息,上面写着>“通过” <。<。<。<。

  • 如果打开go.mod文件,您会发现它包含了我们刚创建的模块的名称:
module example.com/hello

go 1.16

此文件还指定了我们正在使用的GO版本(在这种情况下,版本1.16)。

  • 现在,让我们在模块中添加一个依赖关系。我们将使用rsc.io/quote软件包,该软件包提供了一系列著名的报价。打开hello.go文件并在文件开头添加以下行:

Image description

此行将报价软件包导入到我们的模块中。

  • 现在,我们可以修改Hello函数以返回报价,而不是字符串“ Hello,world”。更改Hello函数看起来像这样:

Image description

此代码在调用Hello函数时从报价包中返回随机报价。

  • 重新运行GO测试命令以测试更新的模块:

进行测试

此命令将下载rsc.io/quote软件包及其依赖项,然后运行我们在步骤4中创建的测试。如果测试通过,您应该看到一条显示“通过”

的消息

就是这样!您现在创建并测试了GO中的新模块。我希望你喜欢那个。编码是关于玩得开心的,我想让它尽可能简单易于理解。让我们玩下一部分。

添加和测试GO中的新依赖性。

当我们在程序中使用别人的代码时,我们将其称为依赖关系。 GO模块的目的是使我们的程序中的依赖关系变得容易。

在GO中,我们可以在代码中导入其他软件包。要添加新的依赖性,我们需要导入软件包,然后在程序中使用它。这是所涉及的步骤的细分:

  • 创建一个新的GO项目目录
$ mkdir hello && cd hello
  • 使用GO模块初始化项目
$ go mod init example.com/hello
  • 创建一个名为 hello.go 的新GO文件,以下 内容:

Image description

  • 运行代码以验证其有效:
$ go run hello.go

Hello, world.
  • 向项目添加新的依赖性
$ go get rsc.io/sampler
  • 更新Hello.go使用新依赖性:

Image description

  • 运行代码以验证其与新的依赖关系一起工作:
$ go run hello.go
Hello, world.
This is the sampler.

升级依赖项

在GO中,软件包可以取决于其他软件包的工作。这些依赖项是使用GO模块来管理的,这使您可以指定包装所需的依赖项的版本。

要升级依赖项,您需要按照以下步骤操作:

  • 检查当前的依赖性版本:
$ go list -m all
example.com/hello
golang.org/x/text
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0

- 抚养依赖项的次要版本(在此示例中golang.org/x/text):

$ go get golang.org/x/text
  • 检查测试仍然通过
$ go test
PASS

- 检查go.mod文件中的新版本::

$ cat go.mod
module example.com/hello

go 1.16

require (
    golang.org/x/text v0.3.6 // indirect
    rsc.io/quote v1.5.2
    rsc.io/sampler v1.3.0
)
  • 升级依赖项的另一个次要版本(在此示例中rsc.io/sampler):
$ go get rsc.io/sampler@v1.3.1
  • 检查测试仍然通过:
$ go test
PASS
  • 检查go.mod文件中的新版本:
$ cat go.mod
module example.com/hello

go 1.16

require (
    golang.org/x/text v0.3.6 // indirect
    rsc.io/quote v1.5.2
    rsc.io/sampler v1.3.1
)

升级依赖项后,请记住要更改您的版本控制系统。

添加对新的主要版本的依赖性

将新功能添加到取决于新的模块的新主要版本的软件包时,可以遵循以下步骤:

  • 在源代码中更新导入语句以导入模块的旧版本和新的主要版本:

Image description

  • 将新功能添加到取决于模块的最新主要版本的软件包:

Image description

  • 在单独的测试文件中编写新功能的测试功能:

Image description

  • 运行测试以确保代码按预期工作:
$ go test
PASS
ok      example.com/hello   0.024s
  • 使用GO列表命令检查模块依赖项:
$ go list -m rsc.io/q...
rsc.io/quote v1.5.2
rsc.io/quote/v3 v3.1.0
  • 更新源代码以使用模块的最新主要版本:

Image description

  • 重新运行测试以确保代码按预期工作:
$ go test
PASS
ok      example.com/hello   0.014s
  • 将更改更改为版本控制系统:
$ git add.
$ git commit -m "Add Proverb function using rsc.io/quote/v3."

将依赖性升级到新的主要版本:

将依赖性升级到新的主要版本可以引入代码的破坏更改。因此,在升级之前仔细检查新主要版本的发行说明和文档至关重要。一旦您确信升级不会引起任何问题,就可以按照以下步骤升级依赖性:

  • 添加一个新功能,需要一个新的主要版本的依赖项:

Image description

请注意,谚语函数需要由模块路径rsc.io/quote/v3标识的rsc.io/quote依赖项的新主要版本。

  • 更新测试:

Image description

  • 运行测试:
$ go test
go: finding rsc.io/quote/v3 v3.1.0
go: downloading rsc.io/quote/v3 v3.1.0
go: extracting rsc.io/quote/v3 v3.1.0
PASS
ok      example.com/mypackage   0.021s
  • 更新代码以使用依赖项的新主要版本:

Image description

请注意,我们已经更新了代码以使用依赖项的新主要版本,该版本包括新的HelloV3()函数。

  • 再次更新测试:

Image description

  • 重新研究测试:
$ go test
PASS
ok      example.com/mypackage   0.020s
  • 将更改用于版本控制:
$ git add.
$ git commit -m "Add Proverb function that requires rsc.io/quote/v3, upgrade dependency to use v3 APIs."

删除未使用的依赖性:

最好会定期查看您的项目依赖性并删除不再使用的任何内容。这可以帮助减少项目的规模并简化维护。

要从项目中删除依赖性,您需要采取以下步骤:

  • 确定要删除的依赖性

在您的代码中查看并找到任何引用依赖项的导入语句。检查您是go.mod文件以查看依赖项是否已列出。

  • 从您的代码引用依赖项的代码中删除导入语句。

  • 使用Go Mod Tidy命令从您的go.modfile中删除未使用的依赖项。此命令将删除您的代码不需要的go.mod文件中的任何模块。

  • 将更改提交您的版本控制系统。

这是如何从使用rsc.io/quote/v3软件包的项目中删除未使用依赖的示例:

  • 确定依赖性:

项目中不再使用rsc.io/quote/v3软件包。

  • 删除导入语句:

删除import quoteV3 "rsc.io/quote/v3"hello.go文件。

  • 使用Go Mod整洁命令:

在项目目录中运行$go mod tidy以从go.mod文件中删除未使用的依赖。

$ go mod tidy

这将从go.mod文件中删除以下行:

  • 提交更改:

将更改更改为您的版本控制系统,以保存您的项目的更改。

$ git add hello.go go.mod go.sum
$ git commit -m "Remove unused dependency rsc.io/quote/v3."

结论

使用GO模块是管理GO中依赖关系的推荐方法。随着GO 1.11和GO 1.12的引入,现在可用于所有受支持的GO的模块。

本教程涵盖了用于使用GO模块的基本工作流程,包括初始化新模块,添加和升级依赖关系以及删除未使用的依赖项。我们还看到了如何使用模块版本以及如何使用不兼容的重要版本处理依赖项。

要开始在本地开发中使用模块,请为您的项目创建一个go.mod文件,并使用$go get根据需要添加依赖项。要使模块的依赖关系保持最新状态并删除所有未使用的依赖项,请使用Mod Chity。

我们鼓励您在GO项目中尝试模块,并向GO社区提供反馈,以帮助塑造GO中依赖性管理的未来。使用GO模块,您的GO项目中的依赖关系从未如此简单!

感谢和备注。

感谢您阅读我的文章。请在下面留下您的反馈;它使我继续前进,并帮助我知道我需要做些什么,以提高我在那里的内容的质量。

这是我的Twitter:https://twitter.com/kingkunte_

欢呼!