結(jié)構(gòu)在Golang中是一個(gè)用戶定義的類型,它允許我們在一個(gè)單元中創(chuàng)建一組不同類型的元素。任何具有一組屬性或字段的真實(shí)實(shí)體都可以表示為結(jié)構(gòu)。Go語言允許嵌套結(jié)構(gòu)。一個(gè)結(jié)構(gòu)是另一個(gè)結(jié)構(gòu)的字段,稱為嵌套結(jié)構(gòu)。換句話說,另一個(gè)結(jié)構(gòu)中的結(jié)構(gòu)稱為嵌套結(jié)構(gòu)。
語法:
type struct_name_1 struct{ // Fields } type struct_name_2 struct{ variable_name struct_name_1 }
讓我們借助示例來討論這個(gè)概念:
//嵌套結(jié)構(gòu)體 package main import "fmt" //創(chuàng)建結(jié)構(gòu)體 type Author struct { name string branch string year int } //創(chuàng)建嵌套結(jié)構(gòu)體 type HR struct { //字段結(jié)構(gòu) details Author } func main() { // 初始化結(jié)構(gòu)體字段 result := HR{ details: Author{"Sona", "ECE", 2013}, } //打印輸出值 fmt.Println("\n作者的詳細(xì)信息") fmt.Println(result) }
輸出:
作者的詳細(xì)信息 {{Sona ECE 2013}}
嵌套結(jié)構(gòu)體示例2:
package main import "fmt" //創(chuàng)建結(jié)構(gòu) type Student struct { name string branch string year int } //創(chuàng)建嵌套結(jié)構(gòu) type Teacher struct { name string subject string exp int details Student } func main() { //初始化結(jié)構(gòu)字段 result := Teacher{ name: "Suman", subject: "Java", exp: 5, details: Student{"Bongo", "CSE", 2}, } fmt.Println("老師詳細(xì)情況") fmt.Println("老師的名字: ", result.name) fmt.Println("學(xué)科: ", result.subject) fmt.Println("經(jīng)歷: ", result.exp) fmt.Println("\n學(xué)生詳細(xì)資料") fmt.Println("學(xué)生的名字: ", result.details.name) fmt.Println("學(xué)生的部門名稱: ", result.details.branch) fmt.Println("年齡: ", result.details.year) }
輸出:
老師詳細(xì)情況 老師的名字: Suman 學(xué)科: Java 經(jīng)歷: 5 學(xué)生詳細(xì)資料 學(xué)生的名字: Bongo 學(xué)生的部門名稱: CSE 年齡: 2