20
這裏的接口是我的代碼:如何實現與返回類型接口的方法是在Golang
type IA interface {
FB() IB
}
type IB interface {
Bar() string
}
type A struct {
b *B
}
func (a *A) FB() *B {
return a.b
}
type B struct{}
func (b *B) Bar() string {
return "Bar!"
}
我得到一個錯誤:
cannot use a (type *A) as type IA in function argument:
*A does not implement IA (wrong type for FB method)
have FB() *B
want FB() IB
下面是完整的代碼:http://play.golang.org/p/udhsZgW3W2
我應該編輯IA接口或修改我的A結構?
如果我在其他包中定義IA,IB(所以我可以共享這些接口),我必須導入我的包並使用IB作爲A.FB()的返回類型,是不是?
這不回答這個問題。問題在於我們希望將接口放在新文件中而不能更改原始定義。 – epsalon 2017-01-26 00:13:58
@epsalon你的問題與原來的問題有什麼關係?請多描述一下。 – Mue 2017-01-26 05:56:29
我認爲@ epsalon的問題是相當中肯的。假設A和B都在單獨且無法訪問的包中定義。如何回顧性地定義接口IA和IB?你可能想要這樣做的一個例子是,如果你試圖定義這些接口,以便在完全不同的包中爲A和B使用mock而不能修改聲明A和B的原始文件。 – ishaaq 2017-04-24 19:28:39