工作区[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

 

posted @ 2023-07-27 14:00  1/3Sh  阅读(83)  评论(0)    收藏  举报