假设 repo 目录结构是:
repo/
go.work
a/
go.mod
b/
go.mod
go.work
是:
go 1.23.2
use (
a
b
)
如果
a/go.mod
需要一个libgithub.com/imroc/req/v3
,那么似乎b
也可以使用该libgithub.com/imroc/req/v3
,甚至b/go.mod
本身并不需要该lib。
我在 Google 上没有找到任何描述此功能的文档或资源。但似乎是这样的。
我知道
b
可以直接使用a
的代码,但不确定他们是否也共享所需的额外包。
我检查了代码,它确实按照上面所述工作。
但是,当我从
go work sync
所在的目录运行 go.work
时,它会更新 b/go.mod
,并自动添加一行来要求它使用的库。
更重要的是,如果我删除了
b/go.mod
中刚刚添加的require行,b/
中的代码仍然有效,并且在goland中没有显示任何错误。
如果我点击所需库的源代码,它位于
go workspce <xxx/yyy/go.work>
下:
我正在尝试粘贴链接以查看它是否有效,它没有与问题相关的任何内容 - https://youtu.be/3wCnVvdrqy8?si=9aZg06kxh9yN_LmZ