go 使用多模块工作区,让开发者可同时处理多个模块的…
一、使用go work
go 使用多模块工作区,让开发者可同时处理多个模块的开发。在Go 1.17
之前,只能使用go.mod replace
指令实现,虽然支持同时进行多个模块的开发,但使用它可能是很痛苦的。每次当你想要提交代码时,都不得不删除掉 go.mod
中的replace
才能使模块稳定的发布。
在go 1.18
后,官方提供了多模块工作区功能,即go work
。
1. 使用条件
- 需要
go 1.18
或更高版本
# 查看 go 版本
$ go version
go version go1.18 darwin/amd64
2.go work
支持命令
- 通常情况下,建议不要提交
go.work
文件到git
上,它主要用于本地代码开发 - 生成
go.work
文件:推荐在$GOPATH
路径下执行- 注意:若你的开发空间不在
$GOPATH
下,则在你的实际workspace
根目录下执行初始化
- 注意:若你的开发空间不在
init
工作区文件:
# 查看我的 GOPATH
$ go env | grep GOPATH
GOPATH="/Users/xxx/go"
# 查看我的某个 workspace
go $ pwd
/Users/xxx/gitHub/lian/go
go $ go work init # 初始化,生成 go.work工作区文件
go $ tree
【黄色】标识
go-gin-web
是在go
这个当前workspace
下的一个项目,同级的还有另外一个项目go-grammar
【红色】标识内的
go.work
和go.work.sum
是我们init
后,写入的初始化工作区文件。二者在workspace
根目录,与go-gin-web
同级。
- 添加新的模块到工作区:
go work use
$ go work use ./example # 添加一个模块到工作区
$ go work use ./example ./example1 # 添加多个模块到工作区
$ go work use -r ./example # 递归 ./example 目录到当前工作区
# 删除命令
$ go work edit -dropuse=./example
# 查看当前工作区文件路径,排查工作区文件是否设置正确
$ go env GOWORK
/Users/xxx/gitHub/lian/go/go.work
3.go.work
文件结构
- 和
go.mod
文件结构类似,支持Go
版本号、指定工作区和需要替换的仓库 - 文件结构示例:
参考
最后, 希望大家早日实现:成为编程高手的伟大梦想!
欢迎交流~
本文版权归原作者曜灵所有!未经允许,严禁转载!对非法转载者, 原作者保留采用法律手段追究的权利!
若需转载,请联系微信公众号:连先生有猫病,可获取作者联系方式!