什么是多工作区(workspace)
- 为解决本地开发时,碰到的本地依赖查找错位问题而新增的一个依赖查找定位功能。go work 的优先级高于 go mod。
- 使用 go work 的时候,本地会生成 go.work 文件, 类似于 go.mod 文件。
解决了什么问题
- 对开源库进行了二次开发后的本地库,可以使用 go use 对依赖进行查找位置指定
go work use [module_dir]
- 多项目并行开发时, 可以通过 go use 指定依赖进行指定位置查找
怎么使用
先看 help 信息
Usage:
go work <command> [arguments]
The commands are:
edit edit go.work from tools or scripts
init initialize workspace file
sync sync workspace build list to modules
use add modules to workspace file
Use "go help work <command>" for more information about a command.
go work 初始化
go work init ./mod ./tools
项目目录结构
awesomeProject
├── mod
│ ├── go.mod
│ └── main.go
├── go.work
└── tools
├── fish.go
└── go.mod
例子 go.work 文件
go 1.18
use (
./mod
./tools
)
replace golang.org/x/net => example.com/fork/net v1.4.5
go.work 主要由三个命令组成
- go:声明 go 版本号,主要用于后续新语义的版本控制。
- use:声明应用所依赖模块的具体文件路径,路径可以是绝对路径或相对路径,可以在应用命目录外均可。
- replace:声明替换某个模块依赖的导入路径,优先级高级 go.mod 中的 replace 指令。