Golang interfeisu piemēri

Golang Interfeisu Piemeri



Programmā Go metodes parakstu kopa ietver saskarni. Tas nosaka darbību grupu, kas jāveic tipam, lai to noteiktu, lai izpildītu šo saskarni. Citiem vārdiem sakot, saskarne norāda metodes, kurām jābūt tipam, bet nesniedz ieviešanas informāciju. Lai gan Go saskarnes nodrošina jaudīgu mehānismu, lai panāktu polimorfu uzvedību un rakstītu atkārtoti lietojamu kodu. Šajā ziņojumā mēs apskatīsim Go saskarņu ideju un piedāvāsim reālus piemērus, lai parādītu, kā tās izmantot.

1. piemērs: Golang Empty interfeiss

Sāciet ar tukšo saskarni{}, kas tiek saukta par saskarni pakalpojumā Go. Tas norāda veidu, kurā var saglabāt jebkāda veida vērtību. Šis ir Go tukšās saskarnes avota kods:

iepakojums galvenais
imports 'fmt'
veids MarksCalculator saskarne {}
func galvenais () {
bija m MarksCalculator
fmt . Println ( m )
}

Šeit mēs sniedzam kodu, kur “MarksCalculator” saskarnei nav norādītu metodes parakstu, jo tas ir tukšs. Tā rezultātā tas nenodrošina nekādu funkcionalitāti. Tālāk mums ir šīs tukšās saskarnes galvenā () funkcija, kurā tiek deklarēts MarksCalculator tipa mainīgais “m”. Tā kā interfeiss ir tukšs, “m” var būt jebkura veida vērtība. Šajā gadījumā “m” nav inicializēts, tāpēc tā tipam ir nulle, kas saskarnēm ir “nulle”. Kad “m” tiek drukāts, izmantojot “fmt.Println”, tas konsolei izvada “nulle”.







Izgūtā izvade ir “nulle”, kā paredzēts iepriekšējā avota kodā:





2. piemērs: interfeisa ieviešana Golangā

Šajā sadaļā ir parādīta Golang saskarnes ieviešana. Tipam ir jāpiedāvā katras norādītās metodes ieviešana saskarnē, lai to ieviestu programmā Go. Tālāk ir norādīts interfeisa ieviešanas avota kods:





iepakojums galvenais
imports (
'fmt'
)
veids Patskaņi saskarne {
Search Patskaņi () [] rūna
}
veids MyStr virkne
func ( St MyStr ) Search Patskaņi () [] rūna {
bija patskaņi [] rūna
priekš _ , rūna := diapazons st {
ja rūna == 'a' || rūna == 'Tas ir' || rūna == 'es' || rūna == 'O' || rūna == 'iekšā' {
patskaņi = pievienot ( patskaņi , rūna )
}
}
atgriezties patskaņi
}

func galvenais () {
Jauna virkne := MyStr ( 'GoLang saskarnes' )
bija v1 Patskaņi
v1 = Jauna virkne
fmt . Printf ( 'Paskaņi ir %c' , v1 . Search Patskaņi ())
}

Šeit kods definē interfeisu ar nosaukumu “Paskaņi”, kas norāda vienu metodi SearchVowels (), kas atgriež rūnas daļu (tipa int32). Interfeiss ļauj jebkura veida, kas ievieš šīs metodes parakstu, piešķirt saskarnes tipa mainīgajam. Pēc tam tiek deklarēts jauns “MyStr” tips, kas ir pamatā esošās tipa virknes aizstājvārds. Tas nozīmē, ka “MyStr” manto visas virknes metodes, taču tas ir atšķirīgs tips.

Pēc tam mēs ieviešam SearchVowels() metodi “MyStr” tipam. Šī metode skenē ievades virknes rakstzīmi pēc rakstzīmes un pārbauda, ​​vai katra rakstzīme ir patskanis (“a”, “e”, “i”, “o” vai “u”). Ja rakstzīme ir patskaņis, tas tiek pievienots patskaņa šķēlei.



Funkcijā main() tiek izveidots “MyStr” tipa mainīgais “NewString” ar vērtību “GoLang Interfaces”. Pēc tam tiek deklarēts “Vowels” tipa mainīgais “v1”. Tā kā “MyStr” ievieš SearchVowels() metodi, kas definēta saskarnē “Vowels”, “NewString” var piešķirt “v1”.

Izvade parāda visu patskaņu masīvu, kas atrodas norādītajā virknē:

3. piemērs: Golang Stringer interfeiss

Turklāt Golang ir iepriekš definēts “Stringer” interfeiss “fmt” pakotnē. Tas ļauj pielāgotajam tipam kontrolēt tā virknes attēlojumu, ja tas ir formatēts ar “%v” darbības vārdu “fmt” pakotnes drukāšanas funkcijās. Šis ir Go stringer interfeisa koda piemērs:

iepakojums galvenais
imports (
'fmt'
)
veids Students struktūra {
Vārds virkne
Grāds virkne
}
func ( s Students ) Stīga () virkne {
atgriezties fmt . Sprintf ( '%s ir a(n) %s' , s . Vārds , s . Grāds )
}
func galvenais () {
s1 := Students { 'Jeļena Gilberta' , 'Datorzinātne' }
s2 := Students { 'Karolīna Kendisa' , 'BBA' }
fmt . Println ( s1 )
fmt . Println ( s2 )
}

Šeit kods vispirms importē nepieciešamo pakotni, kas ir “fmt”, lai drukātu uz konsoli. Pēc tam mēs definējam struktūras veidu “Students” ar diviem laukiem: “Vārds” un “Gāds”. Šī struktūra atspoguļo studenta informāciju. Turklāt tiek izveidota metode String() tipam “Students”. Šai metodei ir “Students” tipa uztvērējs, un tā atgriež virkni. Metode “String()” ir īpaša metode programmā Go, ko izmanto, lai pielāgotu objekta virknes attēlojumu, kad tas tiek drukāts. Šajā gadījumā metode “String()” formatē un atgriež virkni, kas ietver studenta vārdu un grādu.

Tālāk mums ir galvenā () funkcija, kurā tiek deklarēti un inicializēti ar studenta informāciju divi mainīgie lielumi — s1 un s2 — tipa “Students”. Visbeidzot, kods izmanto fmt.Println() funkciju, lai drukātu s1 un s2 vērtības. Tā kā metode String() ir definēta tipam “Students”, Go automātiski izsauc šo metodi, drukājot objektu “Students”. String() metode formatē skolēna informāciju, izmantojot funkciju “fmt.Sprintf()”, un atgriež formatēto virkni.

Ar šādu izvadi tiek izdrukāts stringer interfeisa “Students” tipa objekts:

4. piemērs: Golang tipa slēdža interfeiss

Pēc tam nāk Go tipa slēdža interfeiss. Tipa slēdzis ir vadības struktūra, kas ļauj pārbaudīt interfeisa vērtības dinamisko tipu. Izpildiet tipa slēdža saskarnes avota kodu:

iepakojums galvenais
imports 'fmt
func MyFunction(F1 interfeiss{}) {
slēdzis F1.(tips) {
case int:
fmt.Println('
Tips : starpt , Vērtība : ', F1.(jūs))
gadījuma virkne:
fmt.Println('
\nRaksts : virkne , Vērtība : ', F1. (virkne))
case float64:
fmt.Println('
\nRaksts : pludiņš64 , Vērtība : ', F1.(float64))
noklusējuma:
fmt.Println('
\nVeids nav derīgs ')
}
}
func main() {
MyFunction('
Golang interfeisu apmācība ')
MyFunction (89.7)
Mana funkcija (patiesa)
}

Šeit sniegtais kods definē funkciju “MyFunction”, kas izmanto “interfeisa{}” tipa parametru “F1”. Tas norāda, ka “F1” var pieņemt jebkura veida vērtību. Funkcijā tiek izmantots slēdža priekšraksts ar “F1.(type)”, lai pārbaudītu vērtības veidu, kas tiek nodota funkcijai “MyFunction”. Sintakse “.(type)” tiek izmantota tipa slēdzī, lai iegūtu interfeisa vērtības pamatā esošo dinamisko tipu. Ņemiet vērā, ka slēdžu gadījumi šeit apstrādā trīs konkrētus veidus: “int”, “string” un “float64”. Ja “F1” tips atbilst kādam no šiem gadījumiem. Tas izdrukā atbilstošo veidu un vērtību, izmantojot tipa apgalvojumus (F1.(int), F1.(string), F1.(float64)). Ja “F1” tips neatbilst nevienam no definētajiem gadījumiem, tiek izpildīts noklusējuma gadījums, kas izdrukā “Veids nav derīgs”.

Pēc tam funkcijā main() “MyFunction” tiek izsaukta trīs reizes ar dažādām vērtībām: virkni, float64 un Būla vērtību (kas netiek apstrādāta slēdža priekšrakstā).

Izvade parāda slēdža saskarnes demonstrāciju ar tipa apgalvojumiem:

5. piemērs: Golang vairākas saskarnes

Turklāt Go piedāvā vairākas saskarnes, kas ļauj nodrošināt dažādas uzvedības kopas atkarībā no konteksta. Šo funkciju sauc par 'vairākām saskarnēm' vai 'interfeisa sastāvu'. Šis kods parāda vairāku saskarņu ieviešanu:

iepakojums galvenais
imports 'fmt'
veids putni saskarne {
elpot ()
lidot ()
}

veids putni saskarne {
barība ()
}
veids Kur struktūra {
vecums starpt
}
func ( d kur ) elpot () {
fmt . Println ( 'Balodis elpo' )
}
func ( d kur ) lidot () {
fmt . Println ( 'Dove fly' )
}
func ( d kur ) barība () {
fmt . Println ( 'Dove audzina mazuļus' )
}
func galvenais () {
bija b putni
d := Kur {}
b = d
b . elpot ()
b . lidot ()
bija putniņi
a = d
a . barība ()
}

Šeit mēs definējam divas saskarnes: “putni” un “putni”. “Putnu” saskarne deklarē divas metodes: elpot () un lidot (). Kamēr “avians” saskarne deklarē feed() metodi. Pēc tam struktūra “balodis” ievieš visas gan “putnu”, gan “putnu” saskarņu metodes. Tas nodrošina elpu (), fly () un feed () implementācijas.

Tālāk mēs deklarējam mainīgo 'b' tipa 'putni' funkcijā main (). Tiek izveidots “baloža” gadījums un piešķirts “b”, izmantojot b = d piešķiršanu. Tā kā “dove” ievieš visas “putnu” saskarnes metodes, šis uzdevums ir derīgs.

Pēc tam metodes elpot () un lidot () tiek izsauktas ar “b”, kas ir “putnu” tipa. Līdzīgi tiek deklarēts mainīgais “a” tipa “avians” un piešķirts ar “dū” gadījumu “dove”. Tā kā “dove” ievieš padeves () metodi, kas definēta saskarnē “avians”, arī šis uzdevums ir derīgs. Padeves() metode tiek izsaukta ar “a”, kas ir “putnu” tipa. Tā kā “a” satur “dove” instanci, tiek izpildīta plūsmas () metode, ko īsteno “dove”.

Izvade parāda, ka interfeisu metodes tiek izpildītas pareizi:

Secinājums

Mēs apguvām Go saskarņu pamatus un sniedzām praktiskus piemērus, lai ilustrētu to lietošanu. Definējot saskarnes un ieviešot tās ar dažādiem veidiem, mēs varam izveidot elastīgas un paplašināmas programmas.