Kuidas Golangis valitud avaldust kasutada?

Kuidas Golangis Valitud Avaldust Kasutada



A vali avaldus Golangis võimaldab arendajatel sünkroonida ja suhelda Go-rutiinide, kanalite ja andmevoogude vahel. See võimaldab programmil Go oodata mitme kanali toimingut korraga ja sooritada esimene valmis toiming.

Selles artiklis uurime, kuidas seda kasutada vali avaldus Golangis ja esitage näiteid, mis aitavad teil Go programmides saavutada paralleelsust, samaaegsust ja sünkroonimist.

Kuidas Golangis valitud avaldust kasutada?

Sarnaselt lüliti avaldusega, vali avaldus võimaldab meil valida ja käivitada ühe avaldise paljude avaldiste hulgast, kuid peamine erinevus nende vahel vali ja lüliti on see vali avaldus toimib ootamise põhimõttel, mis tähendab, et vali avaldus ei käivitu enne, kui side on lõppenud.







Siin viitab suhtlus andmete saatmisele ja vastuvõtmisele mis tahes kanali kaudu. Kui suhtlus on lõppenud, viiakse läbi järgmine kontroll, mis võimaldab meil näha, et Go keele valikulause sõltub täielikult kanalist.



Valimise avalduse süntaks

Selle jaoks kasutatav lihtne süntaks vali avaldus Go-keele kasutamine on näidatud allpool:



vali {
juhtum kanal_1 :
// kood, mida käivitada, kui kanal_1 on valmis
juhtum kanal_2 :
// käivitatav kood, kui kanal_2 on valmis
juhtum kanal_3 :
// käivitatav kood, kui kanal_3 on valmis
juhtum kanal_4 :
// käivitatav kood, kui kanal_4 on valmis
vaikimisi :
// käivitatav kood, kui ükski kanal pole valmis
}

Siin:





  • A. piires vali avaldus , tähistab iga juhtum kanalitoimingut, mis võib olla vastuvõtu- või saatmistoiming.
  • The vali avaldus ootab, kuni üks juhtudest on valmis, ja käivitab seejärel selle ja sellega seotud juhtumilause.
  • See valib kanali juhuslikult, kui käivitamiseks on valmis mitu kanalit.

Kuidas Golangis kanalit luua

Kanali loomiseks rakenduses Go saavad kasutajad kasutada funktsiooni make, millele järgneb chan märksõna ja määrake kanali tüüp, mis võib olla int, string või muu.

ptk := tegema ( chan tüüpi )

Rakendage Golangis Select Statement

Siin pakume mitmeid näiteid, mis aitavad teil rakenduse kasutamise põhitõdesid õppida vali avaldus Golangis.



Näide 1

Järgmine näide vali avaldus näitab, kuidas see toimib, kui mõlemad kanalid on täitmiseks valmis.

pakett peamine

importida 'fmt'

func main ( ) {

ühel := tegema ( chan int )

str := tegema ( chan string )

mine chan_num ( ühel )

minge chan_str ( str )

vali {

juhtum Ch1 := <- ühel :

fmt. Println ( 'Kanali andmed:' , Ch1 )

juhtum Ch2 := <- str :

fmt. Println ( 'Kanali andmed:' , Ch2 )

}

}

func chan_num ( num chan int ) {

ühel <- 67

}

func chan_str ( str chan string ) {

str <- 'Linux'

}

Ülaltoodud näites lõime kaks kanalit, ühel, ja str ja kasutasime Go-funktsioone chan_num() andmete saatmiseks kanalile num ja chan_str() andmete saatmiseks str kanalile. Kuna programm sisaldab kahte erinevat kanalit, kasutasime vali avaldus ühe neist hukkama.

Juhtum Ch1 loeb väärtuse alates num kanal ja kuvab selle. Samamoodi juhtum Ch2 tagastab väärtuse str kanal. Ülaltoodud programm tagastab kanali väljundi, mis on kasutamiseks valmis. Väljund

Näide 2

Kui soovite lisada kanalile viivitust ja tagastada mõne teise kanali väljundi, saate kasutada time.sleep() funktsioon määratud kanalil. See võimaldab printida teise kanali väljundit konsooli. Siin on näide sellisest juhtumist.

pakett peamine

importida (

'fmt'

'aeg'

)

func main ( ) {

ühel := tegema ( chan int )

str := tegema ( chan string )

mine chan_num ( ühel )

minge chan_str ( str )

vali {

juhtum Ch1 := <- ühel :

fmt. Println ( 'Kanali andmed:' , Ch1 )

juhtum Ch2 := <- str :

fmt. Println ( 'Kanali andmed:' , Ch2 )

}

}

func chan_num ( num chan int ) {

ühel <- 67

}

func chan_str ( str chan string ) {

aega . Magama ( 5 * aega . Teiseks )

str <- 'Linux'

}

Ülaltoodud koodis kasutasime aeg. Magama() funktsiooni sees chan_str() funktsiooni. Ainult num-kanal on esimese 5 sekundi jooksul täitmiseks valmis. Selle tulemusena on vali avaldus jookseb juhul Ch1 .

Väljund

Märge: Kanalite täitmise edasilükkamiseks saate mõlemale kanalile lisada viivituse.

Järeldus

The vali avaldus in Go võimaldab valida ja täita ühe avaldise paljude avaldiste hulgast, kasutades ootamise põhimõtet, kus lauset ei käivitata enne, kui side on lõppenud. Eespool nimetatud juhised hõlmavad vali avaldus põhiline süntaks ja näited.