Шаг 85.
Язык программирования Go.
Переопределение встраиваемых полей

    На этом шаге рассмотрим переопределение встраиваемых полей в Go.

    Методы встраиваемых полей можно переопределять, просто создавая для встраивающей структуры новые методы с теми же именами, что и методы встроенного поля. Например, предположим, что имеется следующий тип элемента:

type LuxuryItem struct {
	Item           // Анонимное поле(встраивание)
	markup float64 // Именованное поле (агрегирование)
}

    Если вызвать метод Cost() относительно значения типа LuxuryItem, будет вызван метод Item.Cost() встроенного типа, как и в случае со значением типа SpecialItem.

func (item *LuxuryItem) Cost() float64 {
    return item.Item.Cost() * item.markup
} 

    Архив с примерами можно взять здесь.

    Последняя реализация использует уже имеющийся метод Cost(). Переопределяющие методы не должны использовать методов встроенного типа, если в этом нет необходимости.

    На следующем шаге рассмотрим использование методов-выражений в Go.


Предыдущий шаг Содержание Следующий шаг