我想要这样的东西: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()
}
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消