Go Module

0 条评论 , 0 次修正,290 次阅读, 最后更新于 2020年02月19日

什么是 modules

现在都在说 modules,那么它是什么?到文档看看 Modules, module versions, and more

A module is a collection of related Go packages. Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules. Modules replace the old GOPATH-based approach to specifying which source files are used in a given build.

翻译一下:

模块是相关 Go 包的集合。modules 是源代码交换和版本控制的单元。 go 命令直接支持使用 modules,包括记录和解析对其他模块的依赖性。modules 替换旧的基于 GOPATH 的方法来指定在给定构建中使用哪些源文件。

可以得到两个重要信息:

  • Go 命令行支持 modules 操作
  • modules 用来替换 GOPATH 的

Go Module 是从 Go 版本1.11.1开始官方提供的包管理工具,用于解决 Go 项目的包管理及依赖,类似于 PHP 的composer、Nodejs 的npm。本章节会对Go Module的一些常用的实用的命令/设置进行介绍,更详细的介绍请查看官方文档:https://github.com/golang/go/wiki/Modules

关于 go.mod

go.mod是 Go 项目的依赖描述文件,该文件主要用来描述两个事情:

  1. 当前项目名 (module) 是什么。每个项目都应该设置一个名称,当前项目中的包 (package) 可以使用该名称进行相互调用。
  2. 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成 go.sum 依赖分析结果,随后 go 编译器会去下载这些第三方包,然后再编译运行。

我们将之前的 hello world 项目做一些改变,增加一个 go.mod 文件(也可以在项目根目录下使用 go mod init 项目名称命令初始化项目生成该文件),内容如下:

module myhello

其中,myhello 为当前项目的名称,可以随意设置。

就这样简单便完成了项目的 module 初始化。

一般情况下,go.sum 依赖分析文件应当被添加到版本管理中随着 go.mod 文件一起提交。

使用 go.mod

使用go.mod意即用go.mod进行项目依赖管理。我们有两种go.mod的使用方式:IDE-vgo 和命令行方式。以下我们通过下载使用 beego 框架来演示如何使用这两种方式来管理依赖。

如果需要 Goland IDE 支持 go.mod,必须要打开 vgo 的支持(包括代码依赖检测)。这两种使用方式的区别仅仅是下载依赖包的方式不同。