工作区[workspaces mode]
前言
工作区模式为1.18版本添加的一个比较重要的功能。笔者接触Go语言时最新版已是1.20,所以对之前的GOPATH暂不作学习探究。
用途
在开发时可以同时处理多个位于本地的module,无需再编辑每个模块文件的go.mod文件。比如模块A需要引用位于本地的模块B。如果不使用workspaces mode,就需要在模块A的go.mod文件中添加replace。一个两个还好,多了就会很麻烦。而使用工作区模式,可以直接标记整个文件夹或递归子文件夹里的所有module。
用法
以此为例:
workspaces ├── go.work └── web ├── gee │ ├── context.go │ ├── gee.go │ ├── go.mod │ ├── router.go │ └── trie.go ├── go.mod └── main.go
创建工作区
1、在workspaces(可自定义)文件夹下使用go work init web web/gee创建工作区并将包含go.mod的web文件夹及web/gee文件夹添加到工作区。
2、也可只使用go work init命令创建一个空的工作区
向工作区添加module
使用go work use web web/gee或是go work use -r web 来添加module。-r参数会递归后面的文件夹。
go.work文件内容:
go 1.18 use ( ./web ./web/gee )
其他命令:
1、go work sync 将工作区的构建列表同步到工作区的模块
2、go env GOWORK 查看当前工作区文件路径
3、replace用法于go.mod一致,但go.work的优先级高于go.mod,且use和replace不可同时指向相同的本地路径。
4、禁用/开启工作区 命令:export GOWORK=off/on

浙公网安备 33010602011771号