Вложенная структура в Go
Поле может само быть структурой, и тогда к внутреннему полю идут через вторую точку. Сначала имя внешнего значения и поле-структура, затем имя поля внутри этой вложенной структуры. Тип вложенного поля объявляют отдельно, как любой другой тип.
Опишем адрес с городом и пользователя с адресом:
type Address struct {
City string
}
type User struct {
Name string
Address Address
}
user := User{
Name: "ann",
Address: Address{City: "oslo"},
}
fmt.Println(user.Address.City)
На экране "oslo". Цепочка user.Address.City
сначала берет поле Address, затем поле
City внутри него. Внешнее имя Name
по-прежнему читается одной точкой.
Внутреннее поле можно менять отдельно:
type Address struct {
City string
}
type User struct {
Name string
Address Address
}
user := User{Name: "ann", Address: Address{City: "oslo"}}
user.Address.City = "bergen"
fmt.Println(user.Address.City)
Даны типы Address с City и User
с полями Name и Address. Создайте
пользователя с городом "rome" и выведите город.
Дана структура:
type Address struct {
City string
}
type User struct {
Name string
Address Address
}
user := User{Name: "bob", Address: Address{City: "paris"}}
Замените город на "lyon" и выведите
user.Address.City.
Дан следующий код:
type Size struct {
W int
H int
}
type Rect struct {
Label string
Size Size
}
r := Rect{Label: "a", Size: Size{W: 2, H: 3}}
Выведите W и H через цепочку полей.