> For the complete documentation index, see [llms.txt](https://appsecurity.gitbook.io/devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://appsecurity.gitbook.io/devops/ppc/ppc-langs/backend/go/common/oop/klyuchevye-ponyatiya.md).

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

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

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

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

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

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