Ключевые понятия

Вместо механизмов агрегирования и наследования, как в большинстве других объектно-ориентированных языков, Go поддерживает механизмы агрегирования (также наз композицией) и встраивания (в некоторых др языках это называется делегированием). Чтобы понять разницу между агрегированием и встраиванием, см пример:

type ColoredPoint struct {
    color.Color    // Анонимное (безымянное) поле (встраивание)
    x, y int       // Именованные поля (агрегирование)
}

В отсутствие наследования исчезли и виртуальные функции. Вместо этого механизма Go предлагает механизм динамической типизации. В языке Go параметры могут определяться как конкретные типы или как интерфейсы (то есть значения, обладающие методами). В параметре, объявленном как интерфейс, можно передать любое значение, при условии, что оно обладает методами этого интерфейса.

Любой тип - есть interface{}. Соотв, где методы, обрабатывающие interface{}, могут обработать любой тип.

Всроенные типы не позволяют добавлять в них новые методы, однако легко строить новые типы на основе встроенных.

Last updated