Hur använder man Select Statement i Golang?

Hur Anvander Man Select Statement I Golang



A välj uttalande i Golang gör det möjligt för utvecklare att synkronisera och kommunicera mellan Go-rutiner, kanaler och dataströmmar. Det tillåter ett Go-program att vänta på flera kanaloperationer samtidigt och utföra den första operationen som är klar.

I den här artikeln kommer vi att utforska hur man använder välj uttalande i Golang och ge exempel som hjälper dig att uppnå parallellitet, samtidighet och synkronisering i Go-program.

Hur använder man Select Statement i Golang?

I likhet med switch-satsen, välj uttalande tillåter oss att välja och köra ett uttryck bland många uttryck, men den primära skillnaden mellan Välj och switch är att välj uttalande fungerar på vänteprincipen, vilket innebär att välj uttalande kommer inte att köras förrän kommunikationen är klar.







Här avser kommunikation att skicka och ta emot data över en given kanal. När kommunikationen är klar utförs nästa kontroll, vilket gör att vi kan se att Go-språkets select-sats är helt beroende av kanalen.



Syntax för Select Statement

Den enkla syntaxen som används för välj uttalande använda Go-språket visas nedan:



Välj {
fall kanal_1 :
// kod som ska köras när kanal_1 är klar
fall kanal_2 :
// kod som ska köras när kanal_2 är klar
fall kanal_3 :
// kod som ska köras när kanal_3 är klar
fall kanal_4 :
// kod som ska köras när kanal_4 är klar
standard :
// kod som ska köras om ingen av kanalerna är klara
}

Här:





  • Inom en välj uttalande , representerar varje fall en kanaloperation, som kan vara en mottagningsoperation eller en sändningsoperation.
  • De välj uttalande väntar tills ett av ärendena är klart och kör sedan det och den tillhörande ärendesatsen.
  • Den väljer slumpmässigt kanalen om det finns flera kanaler redo att köras.

Hur man skapar en kanal i Golang

För att skapa en kanal i Go kan användarna använda make-funktionen följt av chan nyckelord och ange kanaltypen, som kan vara int, sträng eller andra.

kap := göra ( chan typ )

Implementera Select Statement i Golang

Här kommer vi att ge flera exempel som hjälper dig att lära dig grunderna för att använda välj uttalande i Golang.



Exempel 1

Följande exempel på välj uttalande visar hur det fungerar när båda kanalerna är redo att köras.

huvudpaketet

importera 'fmt'

func huvud ( ) {

på ett := göra ( chan int )

str := göra ( chan sträng )

gå chan_num ( på ett )

gå chan_str ( str )

Välj {

fall Ch1 := <- på ett :

fmt. Println ( 'Kanaldata:' , Ch1 )

fall Ch2 := <- str :

fmt. Println ( 'Kanaldata:' , Ch2 )

}

}

func chan_num ( num chan int ) {

på ett <- 67

}

func chan_str ( str chan sträng ) {

str <- 'Linux'

}

I exemplet ovan skapade vi två kanaler, på ett, och str och vi använde Go-funktionerna chan_num() för att skicka data till num-kanalen och chan_str() för att skicka data till str-kanalen. Eftersom programmet innehåller två olika kanaler, använde vi välj uttalande att avrätta en av dem.

Fall Ch1 läser värdet från num kanal och visar den. Likaså fall Ch2 returnerar värdet från str kanal. Ovanstående program returnerar utgången från kanalen som är redo att användas. Produktion

Exempel 2

Om du vill lägga till en fördröjning till en kanal och returnera utsignalen från en annan kanal, kan du använda time.sleep() funktion på en angiven kanal. Detta gör att du kan skriva ut utdata från den andra kanalen till konsolen. Här är ett exempel på ett sådant fall.

huvudpaketet

importera (

'fmt'

'tid'

)

func huvud ( ) {

på ett := göra ( chan int )

str := göra ( chan sträng )

gå chan_num ( på ett )

gå chan_str ( str )

Välj {

fall Ch1 := <- på ett :

fmt. Println ( 'Kanaldata:' , Ch1 )

fall Ch2 := <- str :

fmt. Println ( 'Kanaldata:' , Ch2 )

}

}

func chan_num ( num chan int ) {

på ett <- 67

}

func chan_str ( str chan sträng ) {

tid . Sova ( 5 * tid . Andra )

str <- 'Linux'

}

I den ovan angivna koden använde vi tid.Sömn() funktion inuti chan_str() fungera. Endast num-kanalen är klar för exekvering under de första 5 sekunderna. Som ett resultat av detta välj uttalande kör fall Ch1 .

Produktion

Notera: Du kan lägga till en fördröjning för båda kanalerna för att fördröja exekveringen av kanalerna.

Slutsats

De välj uttalande in Go tillåter val och exekvering av ett uttryck av många uttryck med hjälp av wait-principen, där satsen inte kommer att köras förrän kommunikationen är klar. Ovan nämnda riktlinjer inkluderar välj uttalande grundläggande syntax och exempel.