U ovom članku ćemo istražiti kako koristiti odaberite izjavu u Golangu i pružite primjere koji će vam pomoći da postignete paralelizam, konkurentnost i sinkronizaciju u Go programima.
Kako koristiti naredbu Select u Golangu?
Slično naredbi switch, the odaberite izjavu dopušta nam da odaberemo i izvršimo jedan izraz među mnogim izrazima, ali primarna razlika između Izaberi i prekidač je to odaberite izjavu funkcionira na principu čekanja, što znači da je odaberite izjavu neće se izvršiti dok se komunikacija ne završi.
Ovdje se komunikacija odnosi na slanje i primanje podataka preko bilo kojeg kanala. Kada je komunikacija dovršena, provodi se sljedeća provjera, što nam omogućuje da vidimo da naredba odabira jezika Go u potpunosti ovisi o kanalu.
Sintaksa za naredbu Select
Jednostavna sintaksa koja se koristi za odaberite izjavu korištenje jezika Go prikazano je u nastavku:
Izaberi {
slučaj kanal_1 :
// kod za izvršenje kada je kanal_1 spreman
slučaj kanal_2 :
// kod za izvršenje kada je kanal_2 spreman
slučaj kanal_3 :
// kod za izvršenje kada je kanal_3 spreman
slučaj kanal_4 :
// kod za izvršenje kada je kanal_4 spreman
zadano :
// kod za izvršenje ako nijedan od kanala nije spreman
}
Ovdje:
- Unutar a odaberite izjavu , svaki slučaj predstavlja operaciju kanala, koja može biti operacija primanja ili operacija slanja.
- The odaberite izjavu čeka dok jedan od slučajeva ne bude spreman, a zatim ga pokreće i povezanu izjavu o slučaju.
- Nasumično odabire kanal u slučaju da postoji više kanala spremnih za izvršenje.
Kako stvoriti kanal u Golangu
Kako bi stvorili kanal u Gou, korisnici mogu koristiti funkciju make nakon koje slijedi chan ključnu riječ i odredite vrstu kanala, koja može biti int, niz ili nešto drugo.
CH := napraviti ( čan tip )Implementirajte naredbu Select u Golangu
Ovdje ćemo pružiti nekoliko primjera koji će vam pomoći da naučite osnove korištenja odaberite izjavu u Golangu.
Primjer 1
Sljedeći primjer odaberite izjavu pokazuje kako radi kada su oba kanala spremna za izvršenje.
glavni paketuvoz 'fmt'
funkcija glavna ( ) {
na jedan := napraviti ( chan int )
str := napraviti ( chan string )
idi chan_num ( na jedan )
idi chan_str ( str )
Izaberi {
slučaj Ch1 := <- na jedan :
fmt. Println ( 'Podaci o kanalu:' , Ch1 )
slučaj Ch2 := <- str :
fmt. Println ( 'Podaci o kanalu:' , Ch2 )
}
}
funkcija broj_kanala ( num chan int ) {
na jedan <- 67
}
funkcija chan_str ( str chan niz ) {
str <- 'Linux'
}
U gornjem primjeru stvorili smo dva kanala, na jedan, i str i koristili smo Go funkcije chan_num() za slanje podataka na num kanal i chan_str() za slanje podataka u str kanal. Budući da program sadrži dva različita kanala, upotrijebili smo odaberite izjavu izvršiti jednu od njih.
Slučaj Ch1 očitava vrijednost iz broj kanala i prikazuje ga. Slično, slučaj Ch2 vraća vrijednost iz str kanal. Gornji program vraća izlaz kanala koji je spreman za korištenje. Izlaz
Primjer 2
Ako želite dodati odgodu kanalu i vratiti izlaz drugog kanala, možete koristiti time.sleep() funkciju na određenom kanalu. Ovo vam omogućuje ispis izlaza drugog kanala na konzolu. Evo primjera takvog slučaja.
glavni paketuvoz (
'fmt'
'vrijeme'
)
funkcija glavna ( ) {
na jedan := napraviti ( chan int )
str := napraviti ( chan string )
idi chan_num ( na jedan )
idi chan_str ( str )
Izaberi {
slučaj Ch1 := <- na jedan :
fmt. Println ( 'Podaci o kanalu:' , Ch1 )
slučaj Ch2 := <- str :
fmt. Println ( 'Podaci o kanalu:' , Ch2 )
}
}
funkcija broj_kanala ( num chan int ) {
na jedan <- 67
}
funkcija chan_str ( str chan niz ) {
vrijeme . Spavati ( 5 * vrijeme . Drugi )
str <- 'Linux'
}
U gore navedenom kodu koristili smo vrijeme.Spavanje() funkcija unutar chan_str() funkcija. Samo broj kanala je spreman za izvršenje prvih 5 sekundi. Kao rezultat toga, odaberite izjavu vodi slučaj Ch1 .
Izlaz
Bilješka: Možete dodati odgodu na oba kanala kako biste odgodili izvršenje kanala.
Zaključak
The odaberite izjavu u Go omogućuje odabir i izvršavanje jednog izraza od mnogih izraza korištenjem principa čekanja, gdje se naredba neće izvršiti dok se komunikacija ne završi. Gore navedene smjernice uključuju odaberite izjavu osnovna sintaksa i primjeri.