繼承
尚硅谷Golang課
繼承
type Student struct {
Name string
Age int
Score int
//共有的字段
}
type Pupil struct {
Student //套入
Covid19 bool
}
type College struct {
Student //套入指針效率更好
SexExp bool
}
func (stu *Student) ShowInfo() {
fmt.Printf("姓名=%v 年齡=%v 成績=%v\n", stu.Name, stu.Age, stu.Score)
}
func (stu *Student) SetScore(s int) {
stu.Score = s
}
func (p *Pupil) Test() {
fmt.Println("小學生考試")
}
func main() {
pupilA := &Pupil{}
pupilA.Student.Name = "tome"
pupilA.Student.Age = 8
pupilA.Covid19 = true
pupilA.Test()
pupilA.Student.SetScore(66)
pupilA.Student.ShowInfo()
fmt.Println("是否得肺炎", pupilA.Covid19)
C1 := College{}
C1.Student.Name = "John"
C1.Age = 23 //其實可以省略.Student
C1.SexExp = false
C1.Student.SetScore(39)
C1.ShowInfo() //其實可以省略.Student
fmt.Println("是否破處", C1.SexExp)
//如果有低能把結構體跟匿名結構體用了相同的字段或方法,會採取就近訪問原則
// 如果在一個結構中嵌入多個匿名結構,且匿名結構有同名的字段,那就必須指明匿名結構否則報錯
//組合
var d D
d.a.Name = "xxxx" //有名字的結構體訪問時就要上完整名字
}
//組合
type D struct {
a Student //有名字的結構體
}
上次修改於 2021-08-01
此篇文章的評論功能已經停用。