Sobes.tech
Back to questions
Junior — Middle
89

Каким образом реализована объектно-ориентированная структура в языке Go и как она отличается от классической?

Answer from AI

sobes.tech AI

В Go объектно-ориентированная структура реализована через композицию и интерфейсы, а не через классы и наследование, как в классическом ООП.

Основные отличия:

  • Отсутствие классов: В Go нет классов, вместо этого используются структуры (struct), которые содержат поля и методы.
  • Композиция вместо наследования: Вместо наследования структур можно включать одну структуру в другую, что позволяет повторно использовать код.
  • Интерфейсы: Интерфейсы в Go определяют набор методов, которые должна реализовать структура. Типы автоматически реализуют интерфейс, если имеют нужные методы, без явного указания.

Пример:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Таким образом, Go предлагает более простую и гибкую модель ООП, основанную на интерфейсах и композиции, без сложностей классического наследования.