Een structuur of struct in Golang is een door de gebruiker gedefinieerd type waarmee we een groep elementen van verschillende typen tot één eenheid kunnen samenvoegen. Elke entiteit uit de echte wereld met een bepaalde set eigenschappen of velden kan worden weergegeven als een struct.

Hoe geneste structuren in Golang te gebruiken
De taal Go staat geneste structuren toe. Een structuur die een veld is van een andere structuur, wordt een geneste structuur genoemd. Met andere woorden, een structuur binnen een andere structuur wordt een geneste structuur genoemd. Syntaxis:
type struct_name_1 struct{
// Các trường
}
type struct_name_2 struct{
variable_name struct_name_1
}
Bekijk het volgende voorbeeld om de geneste structuur in Golang te begrijpen:
Voorbeeld 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)
}
Resultaat:
Details of Author
{{Sona ECE 2013}}
Voorbeeld 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)
}
Resultaat:
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
Voorbeeld 3:
In Go kan een structuur velden hebben die zelf structuren zijn, zogenaamde geneste structuren. Hier is een voorbeeld van een structuur met een geneste structuur:
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)
}
Resultaat:
John Doe
Age: 30
Address:
Street: 123 Main St
City: Anytown
State: CA
Postal Code: 12345
Hier definiëren we twee structuurtypen: Persoon en Adres. Persoon heeft een genest structuurveld met de naam Adres. In de hoofdfunctie maken we een nieuw Persoon-exemplaar met een Adres-veld. Vervolgens printen we de verschillende veldwaarden van de structuren Persoon en Adres met behulp van de puntnotatie om toegang te krijgen tot de geneste velden.