Kaip naudoti pasirinktinį pareiškimą Golange?

Kaip Naudoti Pasirinktini Pareiskima Golange



A pasirinkite teiginį in Golang leidžia kūrėjams sinchronizuoti ir bendrauti tarp Go rutinos, kanalų ir duomenų srautų. Tai leidžia programai „Go“ vienu metu laukti kelių kanalų operacijų ir atlikti pirmąją paruoštą operaciją.

Šiame straipsnyje mes išsiaiškinsime, kaip naudoti pasirinkite teiginį „Golang“ ir pateikite pavyzdžių, padėsiančių pasiekti lygiagretumą, lygiagretumą ir sinchronizavimą „Go“ programose.

Kaip naudoti pasirinktinį pareiškimą Golange?

Panašiai kaip jungiklio teiginys, pasirinkite teiginį leidžia pasirinkti ir vykdyti vieną išraišką iš daugelio išraiškų, tačiau pagrindinis skirtumas tarp pasirinkite ir jungiklis yra tas pasirinkite teiginį veikia laukimo principu, o tai reiškia, kad pasirinkite teiginį nebus vykdomas, kol nebus baigtas ryšys.







Čia komunikacija reiškia duomenų siuntimą ir gavimą bet kuriuo kanalu. Pasibaigus ryšiui, atliekamas kitas patikrinimas, leidžiantis pamatyti, kad Go kalbos pasirinkimo teiginys visiškai priklauso nuo kanalo.



Sintaksė pasirinktam teiginiui

Paprasta sintaksė, naudojama pasirinkite teiginį „Go“ kalbos naudojimas parodytas toliau:



pasirinkite {
atveju kanalas_1 :
// kodas, kurį reikia vykdyti, kai kanalas_1 yra paruoštas
atveju kanalas_2 :
// kodas, kurį reikia vykdyti, kai kanalas_2 yra paruoštas
atveju kanalas_3 :
// kodas, kurį reikia vykdyti, kai kanalas_3 yra paruoštas
atveju kanalas_4 :
// kodas, kurį reikia vykdyti, kai kanalas_4 yra paruoštas
numatytas :
// kodas, kurį reikia vykdyti, jei nė vienas kanalas nėra paruoštas
}

Čia:





  • Per a pasirinkite teiginį , kiekvienas atvejis reiškia kanalo operaciją, kuri gali būti gavimo arba siuntimo operacija.
  • The pasirinkite teiginį laukia, kol vienas iš atvejų bus paruoštas, tada paleidžia jį ir susijusį atvejo pareiškimą.
  • Jis atsitiktinai parenka kanalą, jei yra keli kanalai, paruošti vykdyti.

Kaip sukurti kanalą Golange

Norėdami sukurti kanalą „Go“, vartotojai gali naudoti „make“ funkciją, po kurios seka chan raktinį žodį ir nurodykite kanalo tipą, kuris gali būti int, eilutė ar kt.

sk := padaryti ( chan tipas )

Įdiekite pasirinkimo pareiškimą Golang

Čia pateiksime kelis pavyzdžius, padėsiančius išmokti naudojimo pagrindus pasirinkite teiginį Golange.



1 pavyzdys

Toliau pateikiamas pavyzdys pasirinkite teiginį parodo, kaip ji veikia, kai abu kanalai yra paruošti vykdyti.

pagrindinis paketas

importuoti 'fmt'

pagrindinė funkcija ( ) {

ant vieno := padaryti ( chan tarpt )

g := padaryti ( chan styga )

eik chan_num ( ant vieno )

eik chan_str ( g )

pasirinkite {

atveju Ch1 := <- ant vieno :

fmt. Println ( 'Kanalo duomenys:' , Ch1 )

atveju Ch2 := <- g :

fmt. Println ( 'Kanalo duomenys:' , Ch2 )

}

}

func chan_num ( num chan tarpt ) {

ant vieno <- 67

}

func chan_str ( str chan eilutė ) {

g <- 'Linux'

}

Aukščiau pateiktame pavyzdyje sukūrėme du kanalus, ant vieno, ir g ir naudojome Go funkcijas chan_num() siųsti duomenis į num kanalą ir chan_str() siųsti duomenis į str kanalą. Kadangi programoje yra du skirtingi kanalai, mes panaudojome pasirinkite teiginį įvykdyti vieną iš jų.

Byla Ch1 nuskaito vertę iš kanalo skaičius ir jį parodo. Panašiai, byla Ch2 grąžina vertę iš g kanalas. Aukščiau pateikta programa grąžina paruošto naudoti kanalo išvestį. Išvestis

2 pavyzdys

Jei norite pridėti delsą prie kanalo ir grąžinti kito kanalo išvestį, galite naudoti time.sleep() funkcija nurodytame kanale. Tai leidžia spausdinti kito kanalo išvestį į konsolę. Štai tokio atvejo pavyzdys.

pagrindinis paketas

importuoti (

'fmt'

'laikas'

)

pagrindinė funkcija ( ) {

ant vieno := padaryti ( chan tarpt )

g := padaryti ( chan styga )

eik chan_num ( ant vieno )

eik chan_str ( g )

pasirinkite {

atveju Ch1 := <- ant vieno :

fmt. Println ( 'Kanalo duomenys:' , Ch1 )

atveju Ch2 := <- g :

fmt. Println ( 'Kanalo duomenys:' , Ch2 )

}

}

func chan_num ( num chan tarpt ) {

ant vieno <- 67

}

func chan_str ( str chan eilutė ) {

laikas . Miegoti ( 5 * laikas . Antra )

g <- 'Linux'

}

Aukščiau pateiktame kode naudojome laikas.Miegas() funkcija viduje chan_str() funkcija. Tik num kanalas yra paruoštas vykdyti pirmąsias 5 sekundes. Dėl to, pasirinkite teiginį paleidžia bylą Ch1 .

Išvestis

Pastaba: Galite pridėti delsą prie abiejų kanalų, kad atidėtumėte kanalų vykdymą.

Išvada

The pasirinkite teiginį „Go“ leidžia pasirinkti ir vykdyti vieną išraišką iš daugelio išraiškų, naudojant laukimo principą, kai sakinys nebus vykdomas, kol nebus baigtas ryšys. Pirmiau nurodytos gairės apima pasirinkite teiginį pagrindinė sintaksė ir pavyzdžiai.