如何实现返回类型的接口方法是Golang中的接口

前端之家收集整理的这篇文章主要介绍了如何实现返回类型的接口方法是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()的返回类型,是吗?

只是改变
func (a *A) FB() *B {
    return a.b
}

func (a *A) FB() IB {
    return a.b
}

当然可以在另一个包中定义IB.所以如果两个接口都是在包foo中定义的,并且这些实现是在package bar中的,那么声明是

type IA interface {
    FB() IB
}

而实施是

func (a *A) FB() foo.IB {
    return a.b
}

猜你在找的Go相关文章