Middle
როგორ ხორციელდება ობიექტზე ორიენტირებული პროგრამირების (OOP) კონცეფციები 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 }- Қабылдағыш мән бойынша: Әдіс құрылымның көшірмесімен жұмыс істейді. Ішкі өзгерістер түпнұсқа құрылымға әсер етпейді.
- Қабылдағыш көрсеткіш арқылы: Әдіс түпнұсқа құрылыммен жұмыс істейді көрсеткіш арқылы. Ішкі өзгерістер түпнұсқа құрылымға әсер етеді.
- Интерфейстер (Interfaces): Әдістердің сигнатураларын анықтайды, оларды орындауы керек тип. Полиморфизмді "құйрық типі" арқылы қамтамасыз етеді (
duck typing). Түр интерфейсті жүзеге асырады, егер барлық әдістерін жүзеге асырса.type Greeter interface { Greet() string } func SayHello(g Greeter) string { return g.Greet() } - Қосылу (Embedding): Бір құрылым басқа құрылымды немесе интерфейсті "қосуға" мүмкіндік береді. Бұл классикалық мұра емес, көбінесе композиция. Қосылған құрылым анонимді өріс болып табылады, оған оның өрістері мен әдістеріне тікелей жүгінуге болады.
type Employee struct { Person // қосылған құрылым ID string } // Employee енді Name және Age өрістеріне, сондай-ақ Greet() әдісіне ие e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Greet()) // Employee арқылы Person құрылымының Greet() әдісін шақыру
| ООП тұжырымдамасы | Go-да жүзеге асыру | Ескертпелер |
|---|---|---|
| Кластар | Құрылымдар | class кілттік сөзі жоқ |
| Инкапсуляция | Экспортталатын (үлкен әріптермен) / Экспортталмайтын (кіші әріптермен) өрістер/әдістер | Пакет деңгейінде көрінуді басқару |
| Мұрагерлік | Қосу (Embedding) | Иерархиялық мұра орнына композиция |
| Полиморфизм | Интерфейстер | Duck typing, интерфейстердің жасырын жүзеге асырылуы |