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 предлагает более простую и гибкую модель ООП, основанную на интерфейсах и композиции, без сложностей классического наследования.