Sobes.tech
Middle

Ինչպես են Go լեզվում իրականացվում օբյեկտային ուղղված ծրագրավորման (OOP) կոնցեպցիաները։

sobes.tech AI

Պատասխան AI-ից

Go-ում չկա դասական հասկացություններ՝ դասեր, ժառանգություն և վիրտուալ մեթոդներ, որոնք բնորոշ են այլ լեզուներին (Java, C++): ՕՕՊ-ը իրականացնում է հետևյալ կերպ.

  • Կառուցվածքներ (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 // встроенная структура Person
    	ID string
    }
    
    // Employee теперь имеет поля Name и Age, а также метод Greet()
    
    e := Employee{
    	Person: Person{Name: "Alice", Age: 30},
    	ID:     "E123",
    }
    fmt.Println(e.Greet()) // вызов метода Greet() структуры Person через Employee
    
ՕՕՊ կոնցեպտ Գործարկում Go-ում Նշումներ
Դասեր Կառուցվածքներ Չկա հստակ class բառը
Էնկապսուլյացիա Արտաքին (մեծատառով) / Անարտաքին (փոքրատառով) դաշտեր/մեթոդներ Կատարման կառավարում փաթեթի մակարդակով
ժառանգություն Ներքին (Embedding) Կոմպոզիցիա՝ փոխարենը ժառանգության
Պոլիմորֆիզմ Ինտերֆեյսներ Duck typing, անորոշ ինտերֆեյսների իրականացում