无法为放置在同一个包中的多个结构实现接口方法

时间:2017-09-01 13:46:01

标签: go interface

我有三个文件:

node.go:

next: 4.94066e-324
min:  2.22507e-308
next<min: 1
next>0:   1

anode.go:

type Node interface {
    AMethod(arg ArgType) bool
    BMethod() bool
}

bnode.go:

type aNode struct {}

func AMethod(aNode ANode, arg ArgType) bool {
    return true
}

func BMethod(aNode ANode) bool {
    return true
}

但是我收到了错误:

type bNode struct {}

func AMethod(bNode BNode, arg ArgType) bool {
    return true
}

func BMethod(bNode BNode) bool {
    return true
}

如何在此有效实施界面?

1 个答案:

答案 0 :(得分:3)

声明一个接受某种类型的函数不会使该函数成为类型method set的一部分(意味着它不能帮助该类型满足特定的接口)。

相反,您需要使用declare a function as a method的正确语法,如下所示:

type BNode struct {}

func (ANode) AMethod(arg ArgType) bool {
    return true
}

func (ANode) BMethod() bool {
    return true
}

type BNode struct {}

func (BNode) AMethod(arg ArgType) bool {
    return true
}

func (BNode) BMethod() bool {
    return true
}