Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpEmES 17 of 280 menu
◀ ▶

Встроенная структура в Go

Обычное поле объявляют с двумя именами: имя поля и тип. Встроенное поле пишут именем типа, без отдельного имени. Так внутренняя структура остается частью внешней, но к ее полям можно обращаться коротко, как увидим дальше.

Запишем адрес с городом и пользователя, который его встраивает:

package main import "fmt" type Address struct { City string } type User struct { Address Name string } func main() { u := User{ Address: Address{City: "oslo"}, Name: "ann", } fmt.Println(u.Name) fmt.Println(u.Address.City) }

В литерале внешней структуры внутреннюю часть заполняют по имени типа Address. Поле Name задают как обычно. Полный путь u.Address.City по прежнему работает и указывает на тот же город, что лежит внутри.

Тот же прием подойдет, когда внутренний тип хранит несколько полей, а внешний добавляет свои данные рядом с ними.

Объявите Address с полем City, User со встроенным Address и полем Name. Создайте значение с городом "rome" и именем "leo" и выведите имя и город через Address.

Дана структура:

package main import "fmt" type Address struct { City string } type User struct { Address Name string } u := User{ Address: Address{City: "oslo"}, Name: "ann", }

Выведите поле города через имя встроенного типа.

Скажите, сколько имен у встроенного поля Address внутри User: одно или два.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить