go语言学习笔记 — 进阶 — 接口(2.3):接口无法实现的例子

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 进阶 — 接口(2.3):接口无法实现的例子相关的知识,希望对你有一定的参考价值。

当(结构体)类型无法实现接口时,编译器会报错。

  • 接口方法名与实现接口的结构体方法名不一致导致的报错
type DataWriter interface {
    WriteData(data interface{}) error 
}

type file struct{}
func (d *file) WriteDatax(data interface{}) error {
    ...
}

上述(结构体)类型方法名与接口方法名不一致,程序报错:

cannot use f (type *file) as type DataWriter in assignment:
        *file does not implement DataWriter (missing WriteData method)

WriteDataX方法名本身是合法的,当尝试把*file类型赋值给DataWriter接口时,编译器需要检查*file是否实现了DataWriter接口,显然编译器在*file中没有找到DataWriter接口需要的WriteData方法。


  • 接口方法与实现接口的结构体方法参数类型名不一致导致的错误
type DataWriter interface {
    WriteData(data interface{}) error 
}


type file struct{}
func (d *file) WriteData(data int) error {
    ...
}

这次未实现DataWriter接口的原因是(结构体)类型的WriteData()方法类型与接口方法中的不一致。

以上是关于go语言学习笔记 — 进阶 — 接口(2.3):接口无法实现的例子的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 进阶 — 接口:在接口和类型之间转换

go语言学习笔记 — 进阶 — 接口:接口的嵌套组合 —— 把多个接口放到一个接口内

go语言学习笔记 — 进阶 — 接口:使用类型分支,批量判断空接口中变量的类型

go语言学习笔记 — 进阶 — 接口:空接口类型interface{} —— 能保存所有值

go语言学习笔记 — 进阶 — 接口(2.2):实现接口的条件 —— 接口中的方法都被实现

go语言学习笔记 — 进阶 — 接口(3.1):接口与类型的关系 —— 一个类型可以实现多个接口