导读
-
随着 2022 年 3 月 15 日 go 1.18 正式发布,新版本除了对性能的提升之外,还引入了很多新功能,其中就有 go 期盼已久的功能泛型(Generics),同时还引入的多模块工作区(Workspaces)和模糊测试(Fuzzing)。
-
关于泛型网上已经有很多介绍的教程了,这里我介绍一个实用的功能,多模块工作区的使用方法和教程。
-
Go 多模块工作区能够使开发者能够更容易地同时处理多个模块的工作,如:
方便进行依赖的代码调试(打断点、修改代码)、排查依赖代码 bug
方便同时进行多个仓库/模块并行开发调试
目录
多模块工作区
说明
- go 使用的是多模块工作区,可以让开发者更容易同时处理多个模块的开发。在 Go 1.17 之前,只能使用
go.mod replace
指令来实现,如果你正巧是同时进行多个模块的开发,使用它可能是很痛苦的。每次当你想要提交代码的时候,都不得不删除掉 go.mod 中的replace
才能使模块稳定的发布版本。 - 在使用 go 1.18 多模块工作区功能的时候,就使用这项工作变得简单容易处理。下面我来介绍怎么使用这一功能。
- Go 多模块工作区文档、代码示例获取地址 https://github.com/link1st/link1st/tree/master/workspaces
使用条件
- 首先 我们需要 go 1.18 或更高版本 go 安装
# 查看 go 版本
> go version
go version go1.18 darwin/amd64
go work
支持命令
-
通常情况下,建议不要提交 go.work 文件到 git 上,因为它主要用于本地代码开发。
-
推荐在:
$GOPATH
路径下执行,生成 go.work 文件 -
go work init
初始化工作区文件,用于生成 go.work 工作区文件
初始化并写入一个新的 go.work 到当前路径下,可以指定需要添加的代码模块
示例:go work init ./hello
将本地仓库 hello 添加到工作区
hello 仓库必须是 go mod 依赖管理的仓库(./hello/go.mod 文件必须存在)
go work use
添加新的模块到工作区
命令示例:
go work use ./example
添加一个模块到工作区
go work use ./example ./example1
添加多个模块到工作区
go work use -r ./example
递归 ./example 目录到当前工作区
删除命令使用go work edit -dropuse=./example
功能
go work edit
用于编辑 go.work 文件
可以使用
edit
命令编辑和手动编辑go.work
文件效果是相同的
示例:
go work edit -fmt go.work
重新格式化 go.work 文件
go work edit -replace=github.com/link1st/example=./example go.work
替换代码模块
go work edit -dropreplace=github.com/link1st/example
删除