首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用返回类型实现接口方法是Golang中的一个接口

如何使用返回类型实现接口方法是Golang中的一个接口
EN

Stack Overflow用户
提问于 2012-08-12 18:52:32
回答 1查看 21K关注 0票数 32

下面是我的代码:

代码语言:javascript
复制
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!"
}

我得到一个错误:

代码语言:javascript
复制
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()的返回类型,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 19:59:56

只要改变就好

代码语言:javascript
复制
func (a *A) FB() *B {
    return a.b
}

转到

代码语言:javascript
复制
func (a *A) FB() IB {
    return a.b
}

当然,IB可以在另一个包中定义。因此,如果两个接口都在foo包中定义,并且实现都在bar包中,则声明为

代码语言:javascript
复制
type IA interface {
    FB() IB
}

虽然实现是

代码语言:javascript
复制
func (a *A) FB() foo.IB {
    return a.b
}
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11921634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档