gpt4 book ai didi

go - 接口(interface)定义中方法签名中的接口(interface)

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:10 26 4
gpt4 key购买 nike

我想要这样的东西:

type MyInterface interface {
MyMetod(interface{})
}

并拥有类型

type MyType struct {}

用方法

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

实现MyInterface

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

最佳答案

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

解决方法是匹配接口(interface):

type MyType struct{}

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

关于go - 接口(interface)定义中方法签名中的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com