Golang实现接口与继承的比较
package main
import (
"fmt"
)
//运动员和学生结构体(父类)
type Athletes struct{
Name string
}
type Student struct{
Name string
}
//声明接口
type EnglishAble interface{
EngStudying()
}
//子类
type Hoopster struct{
Athletes
}
type Footster struct{
Athletes
}
type Undergraduate struct{
Student
}
type MiddleStudent struct{
Student
}
func(athletes *Athletes)Ableing(){
fmt.Println(athletes.Name, "运动员具备运动员的能力")
}
func(student *Student)Studinging(){
fmt.Println(student.Name, "学生要努力学习......")
}
//足球运动员,大学生掌握英语能力
func (footster *Footster)EngStudying(){
fmt.Println(footster.Name, "足球运动员需要掌握英语能力")
}
func (undergraduate *Undergraduate)EngStudying(){
fmt.Println(undergraduate.Name, "大学生需要掌握英语能力")
}
func main(){
//创建对应的实例
hoopster := Hoopster{
Athletes{
Name : "姚明",
},
}
footster := Footster{
Athletes{
Name : "贝克汉姆",
},
}
hoopster.Ableing()
footster.Ableing()
footster.EngStudying()
middlestudent := MiddleStudent{
Student{
Name : "昭明",
},
}
undergraduate := Undergraduate{
Student{
Name : "悦瑶",
},
}
middlestudent.Studinging()
undergraduate.Studinging()
undergraduate.EngStudying()
}