package main import "fmt" type Hospital interface { //跟其他语言不同,接口是不能有接口变量的 StartWork() StopWork() // StartIllness() // StopIllness() } type Patient struct { Name string Age int } func (p Patient)StartWork(){ fmt.Printf("病人%s,%d岁,开始进入医院,开始看病。\n", p.Name,p.Age) } func (p Patient)StopWork(){ fmt.Println("病人看病完成,离开医院。") } type YiShi struct { Name string Age int } func (s YiShi) StartWork(){ fmt.Printf("医生%s,%d岁,专家。开始工作。\n", s.Name, s.Age) } func (s YiShi) StopWork(){ fmt.Println("医生工作完成,离开医院。") } type YiYuan struct{ } func(y YiYuan)yySys(h Hospital){ h.StartWork() h.StopWork() // h.StartIllness() // h.StopIllness() } func main(){ yiyuan := YiYuan{} // 结构体实现了方法 patient := Patient{ Name: "小明", Age: 20, } yishi := YiShi{ Name: "tom", Age: 64, } //2个结构体要同时实现接口Hospital中的所有方法才能正常运行,不能各自实现一半。各自实现一半不等于全部实现了接口方法。 yiyuan.yySys(yishi) yiyuan.yySys(patient) }