На этом шаге мы рассмотрим агрегирование и встраивание структур в Go.
Структуры поддерживают такую же возможность встраивания, как интерфейсы или другие типы, то есть они могут включаться в другие структуры в виде поля, состоящего только из имени структуры.
Поля встроенного поля обычно доступны непосредственно, с помощью оператора точки (.), без упоминания имени типа, но если вмещающая структура имеет поле с тем же именем, что и поле во встроенной структуре, тогда необходимо использовать имя типа встроенной структуры, чтобы устранить неоднозначность.
Имена полей в структуре должны быть уникальными. К встроенным (то есть анонимным) полям предъявляются особенно строгие требования уникальности. Например, если в структуре имеется встроенное поле типа Integer, в нее также можно добавить другие поля с именами, например Integer2 или BigInteger, поскольку они отчетливо различимы. Но в эту структуру уже нельзя будет добавить поле с именем, например, Matrix.Integer или *Integer, потому что уникальность полей определяется по последним компонентам в их именах, а последние компоненты в них совпадают с именем встроенного поля Integer.
На следующем шаге рассмотрим встраивание значений программах на языке Go.