当(结构体)类型无法实现接口时,编译器会报错。
- 接口方法名与实现接口的结构体方法名不一致导致的报错
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()方法类型与接口方法中的不一致。