您的位置:

Go Mod的使用

Go Mod 是 Go 1.11 版本后推出的一种官方的包管理工具,主要目的是为了解决Go语言包依赖管理问题。与Go早期使用的依赖工具如dep和glide相比,Go Mod 更加简单易用、易于维护,同时能够保证项目的版本控制,让多人协同工作更加平滑高效。

一、初始化项目

在使用 Go Mod 前需要对您的项目进行初始化,通过如下命令,Go Mod会帮您创建一个go.mod配置文件。

go mod init <module name>

其中,<module name>指的是你的go module名称,一般来说这个名称是你的项目所在的文件夹名称。

通过上述命令初始化后,工具会自动的为你的项目创建一个go.mod文件,文件内容包含项目名称、当前项目版本和根模块声明。

二、管理依赖包

Go Mod 的关键特性就是管理第三方包的依赖关系和版本,从而减轻包管理的负担。

在初始化好项目之后,使用以下命令添加一个新的第三方依赖包到项目中:

go get &lt;module name&gt;

其中,<module name>指的是你需要添加的第三方依赖包名称。如果需要添加的包依赖其他包,Go Mod会自动的解析并下载其依赖的包。

当然,Go Mod 还允许我们快速地修改导入包的版本,只需要使用以下命令即可:

go get &lt;module name&gt;@v&lt;version&gt;

其中,<version>是指需要安装的版本号。如果是最新的版本,则输入latest。

三、代码重构

当我们从glide或dep转换到Go Mod时,必须重构代码使其变得兼容。代码应该通过以下命令进行转换,并通过go mod tidy 命令进行代码清理。

  • 将所有的依赖项(包)移动到相应的 go.mod 文件中。然后用 go mod tidy 删除不需要的依赖项。
  • 导入语句应该以一个底线代替 GOPATH/src。
  • 引用_package以生成和存储本地副本。
  • 将 Go 版本升级至 v1.11以上(目前 Go Mod 只能支持 v1.11 以上的 Go 版本)。

四、Vendor 目录管理

Vendor 目录可以用来存储第三方依赖包的源代码。在 Go 1.11 之前,第三方依赖包可能会被放在 $GOPATH/src/ 相关目录中,同时,在这之前传递依赖关系是非常麻烦的。

但是,从 Go 1.11 版本开始,Go Mod 工具被更广泛的使用,设计者开始扩展特性以便能够以更便携、更可读的方式管理第三方依赖包。为了避免服务器端包的缺少造成的问题,Go Mod 还在 go.sum 文件中记录了包的 Git 哈希值以及其他元数据。

通过使用 go mod vendor,您可以将当前项目的依赖项中的所有包和源代码复制到项目的 vendor 目录中。例如

go mod vendor

这将在项目根目录中创建一个 vendor 子文件夹,其中包括由 go.mod 定义的所有的外部引用和它们的子链。

五、总结

Go官方提供的Go Mod工具是项目依赖管理和版本控制的必备工具,其优点在于方便、易用、易于维护和版本控制。 通过使用Go Mod和vendor文件夹,您可以轻松处理依赖项和服务器端缺失情况。

对于Go开发的项目,我们强烈建议使用Go Mod来解决本地和服务器上的依赖管理问题和版本控制问题。