同一 go.work 中的子 go 模块之间是否也共享所需的包?

问题描述 投票:0回答:1

假设 repo 目录结构是:

repo/ 
    go.work
    a/
        go.mod
    b/
        go.mod

go.work
是:

go 1.23.2
use (
    a
    b
)

如果

a/go.mod
需要一个lib
github.com/imroc/req/v3
,那么似乎
b
也可以使用该lib
github.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>
下:

enter image description here

go go-modules go-work
1个回答
0
投票

我正在尝试粘贴链接以查看它是否有效,它没有与问题相关的任何内容 - https://youtu.be/3wCnVvdrqy8?si=9aZg06kxh9yN_LmZ

© www.soinside.com 2019 - 2024. All rights reserved.