結(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