import "fmt" type Personer interface { SayHello() } type Student struct { } func (stu *Student)SayHello() { fmt.Println("老师好") } func main() { //创建一个学生对象 var stu Student //通过接口变量的方式来调用,必须都实现接口中声明的所有方法 var person Personer person = &stu person.SayHello()//此时person调用的是Student对象中的SayHello方法 } 执行结果: 老师好
import "fmt" type Personer interface { SayHello() } type Student struct { } type Teacher struct { } func (stu *Student)SayHello() { fmt.Println("老师好") } func (stu *Teacher)SayHello() { fmt.Println("学生好") } func WhoSayHello(p Personer) { p.SayHello() } func main() { var stu Student var tea Teacher WhoSayHello(&stu) WhoSayHello(&tea) } 执行结果: 老师好 学生好