Go的接口是非侵入式的设计,也就是说,一个具体类型实现接口不需要再语法上显式地声明,只要具体类型的方法集是接口方法集的超集,就代表该类型实现了接口,编译器在编译时会进行方法集的校验。
侵入式接口
实现类需要明确声明自己实现了某个接口。如Java的继承形式:
首先创建好了speak接口
public interface speak {
void speak();
}
human类需要实现speak接口的话,需要使用implement关键字声明实现了该接口
public class human implements speak{
@Override
public void speak() {
System.out.println("i can speak");
}
}
非侵入式接口
具体类型实现接口不需要再语法上显式地声明,一个类只需要实现了接口中的所有函数,就可认为该类实现了这个接口,例如Go中的继承形式:
speak接口
type speak interface{
speak()
}
human类实现speak接口
type human struct{
}
func (human) speak(){
fmt.Println("i can speak")
}
转载:https://blog.csdn.net/bestzy6/article/details/115710694
查看评论