💬 Какие особенности необходимо учитывать при встраивании типов в Go?
В Go поле структуры называется встроенным, если оно объявлено без имени. Например,
В структуре
Поскольку
📌 Основные особенности, которые необходимо учитывать:
1. Встраивание типов не должно использоваться только как синтаксический сахар для упрощения доступа к полю (например,
2. Встраивание типов не должно «продвигать» данные (поля) или поведение (методы), которые мы хотим скрыть от внешнего мира: например, если это позволяет клиентам получить доступ к поведению блокировки, которое должно оставаться приватным для структуры.
В Go поле структуры называется встроенным, если оно объявлено без имени. Например,
type Foo struct {
Bar // Встроенное поле
}
type Bar struct {
Baz int
}
В структуре
Foo
тип Bar
объявлен без связанного с ним имени; следовательно, это встроенное поле.Поскольку
Bar
содержит поле Baz
, это поле «продвигается» в Foo
. Таким образом, Baz
становится доступным из Foo
.📌 Основные особенности, которые необходимо учитывать:
1. Встраивание типов не должно использоваться только как синтаксический сахар для упрощения доступа к полю (например,
Foo.Baz()
вместо Foo.Bar.Baz()
).2. Встраивание типов не должно «продвигать» данные (поля) или поведение (методы), которые мы хотим скрыть от внешнего мира: например, если это позволяет клиентам получить доступ к поведению блокировки, которое должно оставаться приватным для структуры.