gpt4 book ai didi

go - 依赖三角

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:09 25 4
gpt4 key购买 nike

依赖关系是 Go 的一个问题,但这是新事物:

  • 应用程序 A 直接依赖库 BC
  • B直接依赖于库C

如果我们在应用程序 A 的代码中有这样的东西:

funcyInstance := &C.FuncyObject{}
B.CleverFunction(funcyInstance)

当在库 B 中时:

func CleverFunction(arg *C.FuncyObject) {}

它引发了一个错误:

cannot use funcyInstance (type "*A/vendor/github.com/C".FuncyObject) as type "*B/vendor/github.com/C".FuncyObject in argument to B.CleverFunction

我正在使用 Glide 作为依赖管理器。

我知道这种依赖关系配置会导致存在多种类型而不是单一类型(对于所有库),并且可能它只是 Go 的反模式。无论如何......如何解决这个问题?

最佳答案

我将删除 B 下的 vendor 文件夹,并将 C 放在根 vendor 文件夹中(对于应用程序 A 如果我得到你的结构正确)。

这样一来,您最终只会为每种类型分配一个位置。

不确定为什么 B 首先会有一个 vendor 文件夹,因为 Glide 的建议对此很明确:

http://glide.readthedocs.io/en/latest/vendor/

Libraries (codebases without a main package) should not store outside packages in a vendor/ folder

In applications (codebases with a main package) there should only be one vendor/ directory at the top level

关于go - 依赖三角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45381407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com