Kako koristiti naredbu Select u Golangu?

Kako Koristiti Naredbu Select U Golangu



A odaberite izjavu u Golangu omogućuje programerima sinkronizaciju i komunikaciju između Go rutina, kanala i tokova podataka. Omogućuje Go programu da čeka na više operacija kanala odjednom i izvrši prvu operaciju koja je spremna.

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 paket

uvoz '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 paket

uvoz (

'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.