Kā ir uzbūvēts objektorientētais modelis Go?
sobes.tech AI
Atbilde no AI
Go nav tradicionālais objektorientētais modelis ar dziļām mantošanas hierarhijām. Tā vietā tiek izmantots:
-
Struktūras (Structs): Definē datu laukus, līdzīgi kā klases bez metodēm.
type Person struct { Name string Age int } -
Metodes: Funkcijas, kas ir saistītas ar noteiktu struktūru. Tās tiek definētas atsevišķi no struktūras.
func (p Person) Greet() string { return "Hello, my name is " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Metodes ar saņēmēja vērtību (piem.,
(p Person)) darbojas ar struktūras kopiju. - Metodes ar saņēmēja norādi (piem.,
(p *Person)) darbojas ar oriģinālo struktūru un ļauj mainīt tās laukus.
- Metodes ar saņēmēja vērtību (piem.,
-
Saskares (Interfaces): Metožu parakstu kopums. Tipi, kas īsteno visas metodes no saskares, automātiski apmierina šo saskari. Tas ir polimorfisma pamats Go.
type Greeter interface { Greet() string } // Person automātiski īsteno Greeter -
Kompozīcija (Iekļaušana): Tā vietā, lai mantošana, viena struktūra var iekļaut citu struktūru, iegūstot piekļuvi tās laukiem un metodēm.
type Employee struct { Person // Iekļaujam Person struktūru ID string } func (e Employee) GetID() string { return e.ID }Iekļautie lauki un metodes ir pieejami tieši:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // Piekļuve laukam Name caur iekļauto Person fmt.Println(e.Greet()) // Metodes Greet izsaukšana caur iekļauto Person fmt.Println(e.GetID()) // Employee metodes izsaukšana
Tādējādi, objektorientētais modelis Go ir balstīts uz struktūru kompozīciju un uzvedību, kas definēta ar saskarnēm, nevis uz klasisko mantošanas hierarhiju.