โครงสร้างในGolangเป็นประเภทที่ผู้ใช้กำหนดซึ่งช่วยให้เราสร้างกลุ่มขององค์ประกอบประเภทต่างๆ เข้าเป็นหน่วยเดียวได้ เอนทิตีในโลกแห่งความเป็นจริงใดๆ ที่มีคุณสมบัติหรือฟิลด์ชุดหนึ่งๆ สามารถแสดงเป็นโครงสร้างได้

วิธีการใช้โครงสร้างแบบซ้อนกันใน Golang
ภาษา Go อนุญาตให้มีโครงสร้างแบบซ้อนกัน โครงสร้างที่เป็นฟิลด์ของโครงสร้างอื่นเรียกว่าโครงสร้างซ้อนกันกล่าวอีกนัยหนึ่ง โครงสร้างภายในโครงสร้างอื่นเรียกว่า โครงสร้างซ้อนกันรูปแบบประโยค :
type struct_name_1 struct{
// Các trường
}
type struct_name_2 struct{
variable_name struct_name_1
}
พิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจโครงสร้างแบบซ้อนกันใน Golang:
ตัวอย่างที่ 1:
// Chương trình Go minh hoạc
// cấu trúc lồng nhau
package main
import "fmt"
// Tạo cấu trúc
type Author struct {
name string
branch string
year int
}
// Tạo cấu trúc lòng nhau
type HR struct {
// cấu trúc là một trường
details Author
}
func main() {
// Khởi tạo các trường
// của cấu trúc
result := HR{
details: Author{"Sona", "ECE", 2013},
}
// Hiện giá trị
fmt.Println("\nDetails of Author")
fmt.Println(result)
}
ผลลัพธ์:
Details of Author
{{Sona ECE 2013}}
ตัวอย่างที่ 2:
// Chương trình Golang minh họa
// cấu trúc lồng nhau
package main
import "fmt"
// Tạo cấu trúc
type Student struct {
name string
branch string
year int
}
// Tạo cấu trúc lồng nhau
type Teacher struct {
name string
subject string
exp int
details Student
}
func main() {
// Khởi tạo các trường
// của cấu trúc
result := Teacher{
name: "Suman",
subject: "Java",
exp: 5,
details: Student{"Bongo", "CSE", 2},
}
// Hiện giá trị
fmt.Println("Details of the Teacher")
fmt.Println("Teacher's name: ", result.name)
fmt.Println("Subject: ", result.subject)
fmt.Println("Experience: ", result.exp)
fmt.Println("\nDetails of Student")
fmt.Println("Student's name: ", result.details.name)
fmt.Println("Student's branch name: ", result.details.branch)
fmt.Println("Year: ", result.details.year)
}
ผลลัพธ์:
Details of the Teacher
Teacher's name: Suman
Subject: Java
Experience: 5
Details of Student
Student's name: Bongo
Student's branch name: CSE
Year: 2
ตัวอย่างที่ 3:
ใน Go โครงสร้างสามารถมีฟิลด์ที่เป็นโครงสร้างด้วยตัวมันเอง ซึ่งเรียกว่า โครงสร้างแบบซ้อนกัน นี่คือตัวอย่างของโครงสร้างที่มีโครงสร้างแบบซ้อนกัน:
package main
import (
"fmt"
)
type Address struct {
Street string
City string
State string
PostalCode string
}
type Person struct {
FirstName string
LastName string
Age int
Address Address
}
func main() {
p := Person{
FirstName: "John",
LastName: "Doe",
Age: 30,
Address: Address{
Street: "123 Main St",
City: "Anytown",
State: "CA",
PostalCode: "12345",
},
}
fmt.Println(p.FirstName, p.LastName)
fmt.Println("Age:", p.Age)
fmt.Println("Address:")
fmt.Println("Street:", p.Address.Street)
fmt.Println("City:", p.Address.City)
fmt.Println("State:", p.Address.State)
fmt.Println("Postal Code:", p.Address.PostalCode)
}
ผลลัพธ์:
John Doe
Age: 30
Address:
Street: 123 Main St
City: Anytown
State: CA
Postal Code: 12345
ที่นี่เราจะกำหนดประเภทโครงสร้างสองประเภท: บุคคลและที่อยู่ บุคคลมีฟิลด์โครงสร้างแบบซ้อนกันเรียกว่าที่อยู่ ในฟังก์ชันหลัก เราสร้างอินสแตนซ์บุคคลใหม่พร้อมกับฟิลด์ที่อยู่ จากนั้นเราจะพิมพ์ค่าฟิลด์ต่างๆ ของโครงสร้าง Person และ Address โดยใช้สัญลักษณ์จุดเพื่อเข้าถึงฟิลด์ที่ซ้อนกัน