Sobes.tech
Middle

Чӣ гуна консепсияҳои барномасозии объектӣ (OOP) дар забони Go татбиқ мешаванд?

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, иҷрои ғайрирасмии интерфейсҳо