Go'да объектке багытталган модел кандай түзүлгөн?
sobes.tech AI
AIден жооп
Go тилинде классикалык мурас алуу иерархиясы менен салттуу обьектке багытталган модел жок. Анын ордуна колдонулат:
-
Структуралар (Structs): Мейли, методдорсуз класс сыяктуу маалымат талааларын аныктайт.
type Person struct { Name string Age int } -
Методдор: Белгилүү бир структурага байланышкан функциялар. Алар структурадан башка аныкталат.
func (p Person) Greet() string { return "Hello, my name is " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Получатель-баалоо менен методдор (мисалы,
(p Person)) структуранын көчүрмөсү менен иштейт. - Получатель-дарек менен методдор (мисалы,
(p *Person)) оригинал структура менен иштейт жана анын талааларын өзгөртүүгө мүмкүндүк берет.
- Получатель-баалоо менен методдор (мисалы,
-
Интерфейстер: Методдордун сигнатураларынын топтому. Бардык методдорду ишке ашырган типтер автоматтык түрдө бул интерфейсти кабыл алат. Бул Go'догу полиморфизмдин негизи.
type Greeter interface { Greet() string } // Person автоматтык түрдө Greeter интерфейсин ишке ашырат -
Композиция (Встраивание): Мурас алуу ордуна, бир структура башка структураны встраивать алат, анын талааларына жана методдоруна кирүү мүмкүнчүлүгүн берет.
type Employee struct { Person // Person структурасын встраивание ID string } func (e Employee) GetID() string { return e.ID }Встроенные поля жана методдор түздөн-түз жеткиликтүү:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // Встроенная Person аркылуу Name талаасына жетүү fmt.Println(e.Greet()) // Встроенная Person аркылуу Greet методун чакыруу fmt.Println(e.GetID()) // Employee методун чакыруу
Ошентип, Go тилинде объектке багытталган модель структуралардын композициясына жана интерфейстер аркылуу аныкталган жүрүм-турумга негизделген, классикалык мурас алуу иерархиясына эмес.