go work使用

205 阅读1分钟

参考文档

还在用replace?1分钟学会golang 工作区 - 知乎 (zhihu.com)

Go 1.18 新特性:多模块工作区模式 - 知乎 (zhihu.com)

go work是啥?

go work是1.18引入的管理工作区的概念。简单说就是将go.mod中的依赖包改为本地的包。加载包的时候go work的优先级高于go mod

为啥要改成本地的呢?

因为有些依赖包修改了,但是还没发布到git上,拉不到。

如何使用?

1

项目依赖了pb文件,但是pb修改只在本地,还没push到git远端。导致go mod拉到的pb缺失。导致编译不通过 image.png

2

通过go work替换,将go mod依赖的远端包替换成本地的。会在本地目录生成go.work文件

go work init .  ../路径

第一个.是表明当前项目。第二个路径是你想替换的包名,可以是绝对路径也可以是相对路径。 想替换其它包怎么办呢?

go work use ../另一个路径

3

此时项目通过编译,gowork文件如下 image.png

ps

go work 文件不应该上传到git远端,只应该在本地开发中使用。远端依赖的包应该在go mod中定义。