Ako používať Select Statement v Golangu?

Ako Pouzivat Select Statement V Golangu



A vyberte vyhlásenie in Golang umožňuje vývojárom synchronizovať a komunikovať medzi rutinami Go, kanálmi a dátovými tokmi. Umožňuje programu Go čakať na operácie viacerých kanálov naraz a vykonať prvú operáciu, ktorá je pripravená.

V tomto článku sa pozrieme na to, ako ho používať vyberte vyhlásenie v Golang a uveďte príklady, ktoré vám pomôžu dosiahnuť paralelizmus, súbežnosť a synchronizáciu v programoch Go.

Ako používať Select Statement v Golangu?

Podobne ako príkaz switch, aj vyberte vyhlásenie nám umožňuje vybrať a vykonať jeden výraz z mnohých výrazov, ale hlavný rozdiel medzi nimi vyberte a prepínač je ten vyberte vyhlásenie funguje na princípe čakania, čo znamená, že vyberte vyhlásenie sa nevykoná, kým sa komunikácia nedokončí.







Tu sa komunikácia týka odosielania a prijímania údajov cez ktorýkoľvek daný kanál. Po dokončení komunikácie sa vykoná ďalšia kontrola, ktorá nám umožní zistiť, že výber jazyka Go úplne závisí od kanála.



Syntax pre príkaz Select

Jednoduchá syntax použitá pre vyberte vyhlásenie používanie jazyka Go je uvedené nižšie:



vyberte {
prípad channel_1 :
// kód, ktorý sa má spustiť, keď bude kanál_1 pripravený
prípad kanál_2 :
// kód, ktorý sa má spustiť, keď bude kanál_2 pripravený
prípad kanál_3 :
// kód, ktorý sa má spustiť, keď bude kanál_3 pripravený
prípad kanál_4 :
// kód, ktorý sa má spustiť, keď bude kanál_4 pripravený
predvolená :
// kód, ktorý sa má spustiť, ak nie je pripravený žiadny z kanálov
}

Tu:





  • V rámci a vyberte vyhlásenie každý prípad predstavuje operáciu kanála, ktorou môže byť operácia príjmu alebo operácia odoslania.
  • The vyberte vyhlásenie čaká, kým nebude pripravený jeden z prípadov, a potom ho spustí spolu s príslušným príkazom case.
  • Náhodne vyberie kanál v prípade, že existuje viacero kanálov pripravených na spustenie.

Ako vytvoriť kanál v Golangu

Na vytvorenie kanála v Go môžu používatelia použiť funkciu make, po ktorej nasleduje chan kľúčové slovo a zadajte typ kanála, ktorým môže byť int, reťazec alebo iné.

ch := urobiť ( typ chan )

Implementujte príkaz Select v Golang

Tu uvádzame niekoľko príkladov, ktoré vám pomôžu naučiť sa základy používania vyberte vyhlásenie v Golangu.



Príklad 1

Nasledujúci príklad vyberte vyhlásenie ukazuje, ako funguje, keď sú oba kanály pripravené na spustenie.

hlavný balík

importovať 'fmt'

func main ( ) {

na jeden := urobiť ( chan int )

str := urobiť ( chan reťazec )

choď chan_num ( na jeden )

ísť chan_str ( str )

vyberte {

prípad Ch1 := <- na jeden :

fmt. Println ( 'Údaje kanála:' , Ch1 )

prípad Ch2 := <- str :

fmt. Println ( 'Údaje kanála:' , Ch2 )

}

}

func chan_num ( num chan int ) {

na jeden <- 67

}

func chan_str ( str chan reťazec ) {

str <- 'linux'

}

Vo vyššie uvedenom príklade sme vytvorili dva kanály, na jeden, a str a použili sme funkcie Go chan_num() na odoslanie údajov na číslo kanála a chan_str() na odoslanie údajov na kanál str. Pretože program obsahuje dva rôzne kanály, použili sme vyberte vyhlásenie popraviť jedného z nich.

Prípad Ch1 číta hodnotu z počet kanálov a zobrazí ho. Podobne prípad Ch2 vráti hodnotu z str kanál. Vyššie uvedený program vráti výstup kanála, ktorý je pripravený na použitie. Výkon

Príklad 2

Ak chcete kanálu pridať oneskorenie a vrátiť výstup iného kanálu, môžete použiť time.sleep() funkciu na určenom kanáli. To vám umožní vytlačiť výstup druhého kanála do konzoly. Tu je príklad takéhoto prípadu.

hlavný balík

importovať (

'fmt'

'čas'

)

func main ( ) {

na jeden := urobiť ( chan int )

str := urobiť ( chan reťazec )

choď chan_num ( na jeden )

ísť chan_str ( str )

vyberte {

prípad Ch1 := <- na jeden :

fmt. Println ( 'Údaje kanála:' , Ch1 )

prípad Ch2 := <- str :

fmt. Println ( 'Údaje kanála:' , Ch2 )

}

}

func chan_num ( num chan int ) {

na jeden <- 67

}

func chan_str ( str chan reťazec ) {

čas . Spánok ( 5 * čas . Po druhé )

str <- 'linux'

}

Vo vyššie uvedenom kóde sme použili čas.Spánok() funkcia vo vnútri chan_str() funkciu. Prvých 5 sekúnd je pripravený na vykonanie iba num kanál. V dôsledku toho vyberte vyhlásenie beží prípad Ch1 .

Výkon

Poznámka: Obom kanálom môžete pridať oneskorenie, aby ste oddialili spustenie kanálov.

Záver

The vyberte vyhlásenie in Go umožňuje výber a vykonanie jedného výrazu z mnohých výrazov pomocou princípu čakania, kde sa príkaz nevykoná, kým sa nedokončí komunikácia. Vyššie uvedené pokyny zahŕňajú vyberte vyhlásenie základná syntax a príklady.