Hogyan kell használni a Select nyilatkozatot a Golangban?

Hogyan Kell Hasznalni A Select Nyilatkozatot A Golangban



A válasszon kijelentést in Golang lehetővé teszi a fejlesztők számára, hogy szinkronizálják és kommunikáljanak a Go rutinok, csatornák és adatfolyamok között. Lehetővé teszi, hogy a Go program egyszerre több csatornaműveletre várjon, és végrehajtsa az első kész műveletet.

Ebben a cikkben megvizsgáljuk, hogyan kell használni válasszon kijelentést a Golangban, és példákat adjon a párhuzamosság, egyidejűség és szinkronizálás eléréséhez a Go programokban.

Hogyan kell használni a Select nyilatkozatot a Golangban?

A switch utasításhoz hasonlóan a válasszon kijelentést lehetővé teszi, hogy egy kifejezést válasszunk ki és hajtsunk végre a sok kifejezés közül, de az elsődleges különbség a között válassza ki és a kapcsoló az, hogy a válasszon kijelentést a várakozás elvén működik, ami azt jelenti, hogy a válasszon kijelentést nem fog végrehajtani, amíg a kommunikáció be nem fejeződik.







Itt a kommunikáció az adatok bármely adott csatornán történő küldésére és fogadására vonatkozik. Amikor a kommunikáció befejeződött, a következő ellenőrzésre kerül sor, amely lehetővé teszi számunkra, hogy lássuk, hogy a Go nyelv Select utasítása teljes mértékben a csatornától függ.



Szintaxis a Select utasításhoz

Az egyszerű szintaxis a válasszon kijelentést a Go nyelv használata az alábbiakban látható:



válassza ki {
ügy csatorna_1 :
// végrehajtandó kód, amikor a csatorna_1 készen áll
ügy csatorna_2 :
// végrehajtandó kód, amikor a csatorna_2 készen áll
ügy csatorna_3 :
// végrehajtandó kód, amikor a csatorna_3 készen áll
ügy csatorna_4 :
// végrehajtandó kód, amikor a csatorna_4 készen áll
alapértelmezett :
// végrehajtandó kód, ha egyik csatorna sem áll készen
}

Itt:





  • belül a válasszon kijelentést , minden eset egy csatornaműveletet jelent, amely lehet vételi vagy küldési művelet.
  • A válasszon kijelentést megvárja, amíg az egyik eset készen áll, majd lefuttatja azt és a hozzá tartozó esetutasítást.
  • Véletlenszerűen választja ki a csatornát, ha több csatorna áll készen a végrehajtásra.

Hogyan hozzunk létre csatornát Golangban

Csatorna létrehozásához a Go alkalmazásban a felhasználók használhatják a make funkciót, amelyet a chan kulcsszót, és adja meg a csatorna típusát, amely lehet int, karakterlánc vagy más.

ch := készítsenek ( chan típusú )

Valósítsa meg a Select utasítást Golangban

Az alábbiakban számos példát mutatunk be, amelyek segítenek megtanulni a használat alapjait válasszon kijelentést Golangban.



1. példa

A következő példa a válasszon kijelentést bemutatja, hogyan teljesít, ha mindkét csatorna készen áll a végrehajtásra.

csomag fő

import 'fmt'

func main ( ) {

az egyiken := készítsenek ( chan int )

str := készítsenek ( chan húr )

go chan_num ( az egyiken )

menj a chan_str ( str )

válassza ki {

ügy Ch1 := <- az egyiken :

fmt. Println ( 'Csatornaadatok:' , Ch1 )

ügy Ch2 := <- str :

fmt. Println ( 'Csatornaadatok:' , Ch2 )

}

}

func chan_num ( num chan int ) {

az egyiken <- 67

}

func chan_str ( str chan karakterlánc ) {

str <- 'Linux'

}

A fenti példában két csatornát hoztunk létre, az egyiken, és str és a Go függvényeket használtuk chan_num() adatok küldésére a num csatornára és chan_str() adatok küldésére az str csatornára. Mivel a program két különböző csatornát tartalmaz, a válasszon kijelentést hogy kivégezzem az egyiket.

Ügy Ch1 kiolvassa az értéket a szám csatorna és megjeleníti. Hasonlóan eset Ch2 az értéket adja vissza a str csatorna. A fenti program a használatra kész csatorna kimenetét adja vissza. Kimenet

2. példa

Ha késleltetést szeretne hozzáadni egy csatornához, és vissza szeretné adni egy másik csatorna kimenetét, használhatja a time.sleep() funkciót egy megadott csatornán. Ez lehetővé teszi a másik csatorna kimenetének kinyomtatását a konzolra. Íme egy példa egy ilyen esetre.

csomag fő

import (

'fmt'

'idő'

)

func main ( ) {

az egyiken := készítsenek ( chan int )

str := készítsenek ( chan húr )

go chan_num ( az egyiken )

menj a chan_str ( str )

válassza ki {

ügy Ch1 := <- az egyiken :

fmt. Println ( 'Csatornaadatok:' , Ch1 )

ügy Ch2 := <- str :

fmt. Println ( 'Csatornaadatok:' , Ch2 )

}

}

func chan_num ( num chan int ) {

az egyiken <- 67

}

func chan_str ( str chan karakterlánc ) {

idő . Alvás ( 5 * idő . Második )

str <- 'Linux'

}

A fent megadott kódban a time.Sleep() funkció belsejében chan_str() funkció. Csak a num csatorna áll készen a végrehajtásra az első 5 másodpercben. Ennek eredményeként a válasszon kijelentést fut tok Ch1 .

Kimenet

Jegyzet: Mindkét csatornához késleltetést adhat, hogy késleltesse a csatornák végrehajtását.

Következtetés

A válasszon kijelentést A Go-ban lehetővé teszi egy kifejezés kiválasztását és végrehajtását a sok kifejezés közül a várakozás elve alapján, ahol az utasítás nem hajtódik végre, amíg a kommunikáció be nem fejeződik. A fent említett irányelvek közé tartozik válasszon kijelentést alapvető szintaxis és példák.