Структуры (structs) в GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
Структуры (structs) — это составные типы данных, которые могут содержать поля разных типов. Они предоставляют удобный способ объединения нескольких переменных в одну структуру данных.
Определение структуры
Структуры определяются с использованием ключевого слова type и ключевого слова struct. Внутри структуры вы можете определить поля с указанием их типов.
package main
import "fmt"
// Определение структуры
type Person struct {
FirstName string
LastName string
Age int
}
func main() {
// Инициализация экземпляра структуры
person := Person{
FirstName: "Alice",
LastName: "Smith",
Age: 30,
}
// Доступ к полям структуры
fmt.Println(person.FirstName) // Вывод: Alice
fmt.Println(person.LastName) // Вывод: Smith
fmt.Println(person.Age) // Вывод: 30
}
Вложенные структуры
Структуры могут быть вложенными в другие структуры, что позволяет создавать сложные структуры данных.
package main
import "fmt"
type Address struct {
Street string
City string
Country string
}
type Person struct {
FirstName string
LastName string
Age int
Address Address // Вложенная структура
}
func main() {
person := Person{
FirstName: "Alice",
LastName: "Smith",
Age: 30,
Address: Address{
Street: "123 Main St",
City: "Cityville",
Country: "Countryland",
},
}
// Доступ к вложенным полям структуры
fmt.Println(person.Address.Street) // Вывод: 123 Main St
fmt.Println(person.Address.City) // Вывод: Cityville
fmt.Println(person.Address.Country) // Вывод: Countryland
}
Анонимные структуры
GO также поддерживает анонимные структуры, которые могут использоваться для временного хранения данных без явного определения типа.
package main
import "fmt"
func main() {
// Анонимная структура
person := struct {
FirstName string
LastName string
Age int
}{
FirstName: "Bob",
LastName: "Johnson",
Age: 25,
}
fmt.Println(person.FirstName) // Вывод: Bob
fmt.Println(person.LastName) // Вывод: Johnson
fmt.Println(person.Age) // Вывод: 25
}
Структуры в GO предоставляют удобный и гибкий способ организации данных. Они часто используются при создании пользовательских типов данных и представлении сложных структур данных.