Jak používat příkaz Select v Golangu?

Jak Pouzivat Prikaz Select V Golangu



A vybrat prohlášení in Golang umožňuje vývojářům synchronizovat a komunikovat mezi rutinami Go, kanály a datovými toky. Umožňuje programu Go čekat na více kanálových operací najednou a provést první operaci, která je připravena.

V tomto článku prozkoumáme, jak používat vybrat prohlášení v Golang a poskytují příklady, které vám pomohou dosáhnout paralelismu, souběžnosti a synchronizace v programech Go.

Jak používat příkaz Select v Golangu?

Podobně jako u příkazu switch, vybrat prohlášení nám umožňuje vybrat a provést jeden výraz z mnoha výrazů, ale hlavní rozdíl mezi nimi vybrat a přepínač je to vybrat prohlášení funguje na principu čekání, což znamená, že vybrat prohlášení neproběhne, dokud nebude komunikace dokončena.







Komunikace zde znamená odesílání a přijímání dat přes libovolný daný kanál. Po dokončení komunikace se provede další kontrola, která nám umožní zjistit, že příkaz výběru jazyka Go je zcela závislý na kanálu.



Syntaxe příkazu Select

Jednoduchá syntaxe použitá pro vybrat prohlášení použití jazyka Go je uvedeno níže:



vybrat {
pouzdro kanál_1 :
// kód, který se má spustit, když je kanál_1 připraven
pouzdro kanál_2 :
// kód, který se má spustit, když je kanál_2 připraven
pouzdro kanál_3 :
// kód, který se má spustit, když je kanál_3 připraven
pouzdro kanál_4 :
// kód, který se má spustit, když je kanál_4 připraven
výchozí :
// kód, který se má spustit, pokud žádný z kanálů není připraven
}

Tady:





  • V rámci a vybrat prohlášení každý případ představuje operaci kanálu, kterou může být operace příjmu nebo operace odesílání.
  • The vybrat prohlášení čeká, dokud nebude připraven jeden z případů, a poté jej spustí a související příkaz case.
  • Náhodně vybere kanál v případě, že je připraveno ke spuštění více kanálů.

Jak vytvořit kanál v Golangu

K vytvoření kanálu v Go mohou uživatelé použít funkci make následovanou chan klíčové slovo a zadejte typ kanálu, což může být int, string nebo jiné.

ch := udělat ( typ chan )

Implementujte příkaz Select v Golangu

Zde uvádíme několik příkladů, které vám pomohou naučit se základy používání vybrat prohlášení v Golangu.



Příklad 1

Následující příklad vybrat prohlášení ukazuje, jak to funguje, když jsou oba kanály připraveny ke spuštění.

hlavní balíček

import 'fmt'

func main ( ) {

na jednom := udělat ( chan int )

str := udělat ( chan řetězec )

jdi chan_num ( na jednom )

jdi chan_str ( str )

vybrat {

pouzdro Ch1 := <- na jednom :

fmt. Println ( 'Data kanálu:' , Ch1 )

pouzdro Ch2 := <- str :

fmt. Println ( 'Data kanálu:' , Ch2 )

}

}

func chan_num ( num chan int ) {

na jednom <- 67

}

func chan_str ( str chan řetězec ) {

str <- 'linux'

}

Ve výše uvedeném příkladu jsme vytvořili dva kanály, na jednom, a str a použili jsme funkce Go chan_num() pro odeslání dat na kanál číslo a chan_str() pro odeslání dat do kanálu str. Protože program obsahuje dva různé kanály, použili jsme vybrat prohlášení popravit jednoho z nich.

Pouzdro Ch1 přečte hodnotu z počet kanálů a zobrazí jej. Podobně případ Ch2 vrátí hodnotu z str kanál. Výše uvedený program vrací výstup kanálu, který je připraven k použití. Výstup

Příklad 2

Pokud chcete přidat zpoždění kanálu a vrátit výstup jiného kanálu, můžete použít time.sleep() funkce na zadaném kanálu. To vám umožní vytisknout výstup druhého kanálu do konzole. Zde je příklad takového případu.

hlavní balíček

import (

'fmt'

'čas'

)

func main ( ) {

na jednom := udělat ( chan int )

str := udělat ( chan řetězec )

jdi chan_num ( na jednom )

jdi chan_str ( str )

vybrat {

pouzdro Ch1 := <- na jednom :

fmt. Println ( 'Data kanálu:' , Ch1 )

pouzdro Ch2 := <- str :

fmt. Println ( 'Data kanálu:' , Ch2 )

}

}

func chan_num ( num chan int ) {

na jednom <- 67

}

func chan_str ( str chan řetězec ) {

čas . Spát ( 5 * čas . Druhý )

str <- 'linux'

}

Ve výše uvedeném kódu jsme použili time.Sleep() funkce uvnitř chan_str() funkce. Prvních 5 sekund je připraven k provedení pouze kanál num. V důsledku toho vybrat prohlášení běží případ Ch1 .

Výstup

Poznámka: K oběma kanálům můžete přidat zpoždění a zpozdit tak spuštění kanálů.

Závěr

The vybrat prohlášení in Go umožňuje výběr a provedení jednoho výrazu z mnoha výrazů pomocí principu čekání, kdy se příkaz nevykoná, dokud není komunikace dokončena. Výše uvedené pokyny zahrnují vybrat prohlášení základní syntaxe a příklady.