Хотя GoLang не является классическим ООП-языком, он поддерживает основные принципы ООП: инкапсуляцию, наследование (через композицию) и полиморфизм. Рассмотрим каждый из них. Инкапсуляция — это сокрытие внутренней реализации объекта и предоставление только необходимого интерфейса для взаимодействия с ним. В GoLang инкапсуляция достигается за счет использования заглавных и строчных букв в именах полей и методов: Пример: go: package main import "fmt" type Person struct { name string // приватное поле Age int // публичное поле } // Публичный метод func (p *Person) SetName(name string) { p.name = name } // Приватный метод func (p *Person) getName() string { return p.name } func main() { p := Person{Age: 30} p.SetName("John") fmt.Println(p.Age) // 30 // fmt.Println(p.getName()) // Ошибка: getName недоступен } В GoLang отсутствует классическое наследование, но его можно заменить композицией. Композиция позволяет включать одну структуру в другую, тем самым расширяя её