接口定义中的方法签名接口

时间:2016-05-22 16:08:41

标签: go interface

我希望有这样的东西:

type MyInterface interface {
    MyMetod(interface{})
}

并拥有类型

type MyType struct {}

方法

func (mt *MyType) MyMethod(SomeConcreteType) {
   // body
}

实施 MyInterface

但似乎Go无法解决这个问题。我收到一条错误,指出它有 MyMethod(SomeConcreteType),但它需要 MyMethod(interface {})。为什么会如此,这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:4)

这是为什么?这是语言设计。

解决方案是匹配界面:

type MyType struct{}

func (mt *MyType) MyMethod(v interface{}) {
    v, ok := v.(SomeConcreteType)
    if !ok {
        panic("!ok")
    }
    v.doStuff()
}