「Go」Go 组件系列文章1-modules

简介

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

go mod 是 Go 编程语言中用于管理模块依赖关系的一个命令。

go mod 允许您轻松地在 Go 项目中添加、删除和更新依赖项,以及管理依赖项的版本,以确保兼容性和可重复性。

go modules 可以理解为 maven / gradle 等工具

官方文档及介绍

使用

在使用 go mod 前,需要在项目目录下执行 go mod init <name> 命令来初始化模块。

例如,我们以项目 star-im 为例进行初始化,在项目根目录(star-im/)中执行

1
go mod init star-im

会在根目录生成一个 go.mod 的文件来进行包依赖的管理,其中会包含我们所需要的依赖及版本内容,此外某些依赖后面会有 indirect
字样,表示该依赖为传递依赖,也就是非直接依赖。

其他命令如:

1
2
3
4
5
6
7
8
9
go mod <command>
download download modules to local cache -- 将模块下载到本地缓存
edit edit go.mod from tools or scripts -- 从工具或脚本编辑 go.mod 以编辑依赖关系
graph print module requirement graph -- 查看依赖关系图
init initialize new module in current directory -- 初始化当前目录中的新模块
tidy add missing and remove unused modules -- 添加缺少的模块并删除未使用的模块
vendor make vendored copy of dependencies -- 制作依赖项的供应商副本
verify verify dependencies have expected content -- 验证依赖项是否具有预期内容
why explain why packages or modules are needed -- 解释为什么需要包或模块

比较常用的是 init, tidy, edit ,当我们引入依赖包的之后,可以使用 go mod tidy
来命令来整理依赖模块。其他更多内容可参考:go mod使用 | 全网最详细 或者参考官方文档

可以使用命令 go list -m -u all来检查可以升级的package

依赖包仓库地址:https://pkg.go.dev/(相当于maven的 https://mvnrepository.com/),搜索需要的依赖包可以访问此链接,里面也包含了依赖包的使用事项等。

目前 go web 似乎没有比较成型的 web 开发标准,因此我沿用了 Java 的习惯

在根目录中新增 src 目录,以及 main、resource、test 三个下级目录,用于存放主要程序文件、资源设置文件、测试文件。

1
2
3
4
5
star-im
└── src
├── main
├── resource
└── test