Uma estrutura ou struct em Golang é um tipo definido pelo usuário que nos permite criar um grupo de elementos de diferentes tipos em uma única unidade. Qualquer entidade do mundo real que tenha algum conjunto de propriedades ou campos pode ser representada como uma struct.

Como usar estruturas aninhadas em Golang
A linguagem Go permite estruturas aninhadas. Uma estrutura que é um campo de outra estrutura é chamada de Estrutura Aninhada. Em outras palavras, uma estrutura dentro de outra estrutura é chamada de Estrutura Aninhada. Sintaxe:
type struct_name_1 struct{
// Các trường
}
type struct_name_2 struct{
variable_name struct_name_1
}
Considere o exemplo a seguir para entender a estrutura aninhada em Golang:
Exemplo 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)
}
Resultado:
Details of Author
{{Sona ECE 2013}}
Exemplo 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)
}
Resultado:
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
Exemplo 3:
Em Go, uma estrutura pode ter campos que são estruturas, chamadas de estruturas aninhadas. Aqui está um exemplo de uma estrutura que tem uma estrutura aninhada:
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)
}
Resultado:
John Doe
Age: 30
Address:
Street: 123 Main St
City: Anytown
State: CA
Postal Code: 12345
Aqui, definimos dois tipos de struct: Pessoa e Endereço. Pessoa tem um campo struct aninhado chamado Endereço. Na função principal, criamos uma nova instância Person com um campo Address. Em seguida, imprimimos os vários valores de campo das estruturas Pessoa e Endereço usando a notação de ponto para acessar os campos aninhados.