为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
摇曳的蔷薇 2022-01-10 18:49:45
我想要这样的东西:type MyInterface interface {    MyMetod(interface{})}并拥有类型type MyType struct {}用方法func (mt *MyType) MyMethod(SomeConcreteType) {   // body}实现MyInterface。但似乎 Go 无法处理这个问题。我收到一个错误,说它有MyMethod(SomeConcreteType)但它想要MyMethod(interface{})。为什么会这样,什么是解决这个问题的好方法?
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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


解决方案是匹配接口:


type MyType struct{}


func (mt *MyType) MyMethod(v interface{}) {

    v, ok := v.(SomeConcreteType)

    if !ok {

        panic("!ok")

    }

    v.doStuff()

}


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号