依赖是 Go 的一个问题,但这是新的:
- 应用程序
A
直接依赖于库B
和C
- 库
B
直接依赖库C
如果我们在应用程序的代码中有这样的东西A
:
funcyInstance := &C.FuncyObject{}
B.CleverFunction(funcyInstance)
在 lib 中时B
:
func CleverFunction(arg *C.FuncyObject) {}
它引发了一个错误:
不能在 B.CleverFunction 的参数中使用 funcyInstance(类型“*A/vendor/github.com/C”.FuncyObject)作为类型“*B/vendor/github.com/C”.FuncyObject
我使用 Glide 作为依赖管理器。
我知道这种依赖配置会导致存在多种类型而不是单一类型(对于所有库),并且可能只是 Go 的一种反模式。无论如何......如何解决这个问题?