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

Golang接口转换错误:缺少方法

Golang接口转换错误:缺少方法

Go
Helenr 2022-10-10 10:32:31
看看这个片段:package maintype Interface interface {    Interface()}type Struct struct {    Interface}func main() {    var i interface{} = Struct{}    _ = i.(Interface)}structStruct有一个嵌入的成员实现接口Interface。当我编译这个片段时,我得到一个错误:panic: interface conversion: main.Struct is not main.Interface: missing method Interface这看起来很奇怪,因为 struct应该从嵌入的接口Struct继承方法。InterfaceInterface我想知道为什么会发生这个错误?它是在 golang 中设计的还是只是 golang 编译器的错误?
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

您不能同时拥有同名的字段和方法,当您嵌入X提供方法的命名时会发生这种情况X()。


如所写。Struct{}.Interface是一个领域,而不是一个方法。没有Struct.Interface(),只有Struct.Interface.Interface()。


重命名您的界面。例如,这很好用:


package main


type Foo interface {

    Interface()

}


type Struct struct {

    Foo

}



func main() {

    var i interface{} = Struct{}

    _ = i.(Foo)

}


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信