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