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.