1. 程式人生 > >go語言基礎 結構體巢狀

go語言基礎 結構體巢狀

go語言當中的聚合和繼承都是模擬出來的,子類是可以使用父類裡的欄位或功能

結構體的巢狀

type A struct{  //父類
name string
age int
}
type B struct{  //子類
a A // 模擬聚合關係
.....
}
type C struct{   //子類
A // 模擬繼承
}
b := B{}
b.a.name,
c := C{}

b.name,

package main

import "fmt"
type Person5 struct {
   name string
age int
}
//在結構體中屬於匿名結構體的欄位稱為提升欄位
type Student struct {
   //name string
//age int Person5 // 模擬繼承:結構體的巢狀 school string } func main() { /* 繼承:兩個類的繼承關係。子類可以使用父類的功能 對於go語言,沒有真正的繼承。靠結構體的巢狀模擬繼承功能的。 結構體的巢狀: 聚合關係:一個類作為另一個類的屬性。has - a type A struct{} type B struct{ a A } 繼承關係:一個子類繼承一個父類。is - a type C struct{}
type D struct{ C } */ p1 := Person5{"王二狗",30} fmt.Println(p1.name,p1.age) s1 := Student{} s1.name ="李小花" // 提升欄位 s1.age=30 // 提升欄位 s1.school="清華小班" fmt.Println(s1.name,s1.age,s1.school) s2:=Student{Person5{"如夢",20},"清華大班"} fmt.Println(s2) s3:=Student{Person5:Person5{"如歌"
,23},school:"清華中班"} fmt.Println(s3) }