Go只提供類型而不用寫欄位名的方式,也就是匿名欄位,也稱為嵌入欄位。 當匿名欄位是一個struct的時候,那麼這個struct所擁有的全部欄位都被隱式地引入了當前定義的這個struct。 舉個例子,看實例可以更具體化理解: 通常struct定義的時候是欄位名與其類型一一對應,上面通過匿名引用的方式而 ...
Go只提供類型而不用寫欄位名的方式,也就是匿名欄位,也稱為嵌入欄位。
當匿名欄位是一個struct的時候,那麼這個struct所擁有的全部欄位都被隱式地引入了當前定義的這個struct。
舉個例子,看實例可以更具體化理解:
package main import "fmt" type Person struct { name string age int weight int } type Student struct { Person // 匿名欄位,那麼預設Student就包含了Person的所有欄位 speciality string } func main() { mark := Student{Person{"喬峰", 25, 120}, "擒龍手"}// 初始化一個學生 // 訪問相應的欄位 fmt.Println("名字是", mark.name) fmt.Println("年齡是 ", mark.age) fmt.Println("體重是 ", mark.weight) fmt.Println("技能是", mark.speciality) // 修改對應的技能信息 mark.speciality = "降龍十八掌" fmt.Println("技能更新升級") fmt.Println("新技能是 ", mark.speciality) // 修改他的年齡信息 mark.age = 36 fmt.Println("現在的年齡是", mark.age) // 修改他的體重信息 mark.weight += 30 fmt.Println("現在的體重是", mark.weight) }
通常struct定義的時候是欄位名與其類型一一對應,上面通過匿名引用的方式而無需聲明欄位名。