Paano Gamitin ang Select Statement sa Golang?

Paano Gamitin Ang Select Statement Sa Golang



A piliin ang pahayag sa Golang ay nagbibigay-daan sa mga developer na mag-synchronize at makipag-ugnayan sa pagitan ng mga Go routine, channel, at data stream. Nagbibigay-daan ito sa isang Go program na maghintay sa maraming pagpapatakbo ng channel nang sabay-sabay at isagawa ang unang operasyon na handa na.

Sa artikulong ito, tutuklasin natin kung paano gamitin piliin ang pahayag sa Golang at magbigay ng mga halimbawa para matulungan kang makamit ang parallelism, concurrency, at synchronization sa mga Go program.

Paano Gamitin ang Select Statement sa Golang?

Katulad ng switch statement, ang piliin ang pahayag nagpapahintulot sa amin na pumili at magsagawa ng isang expression sa maraming mga expression, ngunit ang pangunahing pagkakaiba sa pagitan pumili at switch ay na ang piliin ang pahayag gumagana sa prinsipyo ng paghihintay, na nangangahulugang ang piliin ang pahayag ay hindi isasagawa hanggang sa makumpleto ang komunikasyon.







Dito, ang komunikasyon ay tumutukoy sa pagpapadala at pagtanggap ng data sa anumang ibinigay na channel. Kapag nakumpleto na ang komunikasyon, isasagawa ang susunod na pagsusuri, na nagbibigay-daan sa amin na makita na ang piniling pahayag ng Go language ay ganap na nakadepende sa channel.



Syntax para sa Select Statement

Ang simpleng syntax na ginamit para sa piliin ang pahayag gamit ang wikang Go ay ipinapakita sa ibaba:



pumili {
kaso channel_1 :
// code na ipapatupad kapag handa na ang channel_1
kaso channel_2 :
// code na ipapatupad kapag handa na ang channel_2
kaso channel_3 :
// code na ipapatupad kapag handa na ang channel_3
kaso channel_4 :
// code na ipapatupad kapag handa na ang channel_4
default :
// code na ipapatupad kung wala sa mga channel ang handa
}

dito:





  • Nasa loob ng piliin ang pahayag , ang bawat kaso ay kumakatawan sa isang channel operation, na maaaring isang receive operation o isang send operation.
  • Ang piliin ang pahayag naghihintay hanggang sa maging handa ang isa sa mga kaso at pagkatapos ay patakbuhin ito at ang nauugnay na pahayag ng kaso.
  • Ito ay random na pinipili ang channel kung sakaling mayroong maraming mga channel na handang isagawa.

Paano Gumawa ng Channel sa Golang

Para gumawa ng channel sa Go, magagamit ng mga user ang make function na sinusundan ng chan keyword at tukuyin ang uri ng channel, na maaaring int, string, o iba pa.

ch := gumawa ( uri ng chan )

Ipatupad ang Select Statement sa Golang

Dito, magbibigay kami ng ilang halimbawa upang matulungan kang matutunan ang mga pangunahing kaalaman sa paggamit ng piliin ang pahayag sa Golang.



Halimbawa 1

Ang sumusunod na halimbawa ng piliin ang pahayag ipinapakita kung paano ito gumaganap kapag ang parehong mga channel ay handa nang isagawa.

pangunahing pakete

angkat 'fmt'

func main ( ) {

sa isa := gumawa ( chan int )

str := gumawa ( chan string )

pumunta sa chan_num ( sa isa )

pumunta sa chan_str ( str )

pumili {

kaso Ch1 := <- sa isa :

fmt. Println ( 'Data ng Channel:' , Ch1 )

kaso Ch2 := <- str :

fmt. Println ( 'Data ng Channel:' , Ch2 )

}

}

func chan_num ( num chan int ) {

sa isa <- 67

}

func chan_str ( str chan string ) {

str <- 'Linux'

}

Sa halimbawa sa itaas, gumawa kami ng dalawang channel, sa isa, at str at ginamit namin ang mga function ng Go chan_num() upang magpadala ng data sa num channel at chan_str() upang magpadala ng data sa str channel. Dahil naglalaman ang programa ng dalawang magkaibang channel, ginamit namin ang piliin ang pahayag upang maisakatuparan ang isa sa kanila.

Kaso Ch1 binabasa ang halaga mula sa num channel at ipinapakita ito. Katulad nito, kaso Ch2 ibinabalik ang halaga mula sa str channel. Ibinabalik ng programa sa itaas ang output ng channel na handa nang gamitin. Output

Halimbawa 2

Kung gusto mong magdagdag ng pagkaantala sa isang channel at ibalik ang output ng isa pang channel, maaari mong gamitin ang time.sleep() function sa isang tinukoy na channel. Pinapayagan ka nitong i-print ang output ng kabilang channel sa console. Narito ang isang halimbawa ng ganoong kaso.

pangunahing pakete

angkat (

'fmt'

'oras'

)

func main ( ) {

sa isa := gumawa ( chan int )

str := gumawa ( chan string )

pumunta sa chan_num ( sa isa )

pumunta sa chan_str ( str )

pumili {

kaso Ch1 := <- sa isa :

fmt. Println ( 'Data ng Channel:' , Ch1 )

kaso Ch2 := <- str :

fmt. Println ( 'Data ng Channel:' , Ch2 )

}

}

func chan_num ( num chan int ) {

sa isa <- 67

}

func chan_str ( str chan string ) {

oras . Matulog ( 5 * oras . Pangalawa )

str <- 'Linux'

}

Sa ibinigay na code sa itaas, ginamit namin ang oras.Sleep() function sa loob ng chan_str() function. Tanging ang num channel ay handa na para sa pagpapatupad para sa unang 5 segundo. Bilang resulta, ang piliin ang pahayag nagpapatakbo ng kaso Ch1 .

Output

Tandaan: Maaari kang magdagdag ng pagkaantala sa parehong mga channel upang maantala ang pagpapatupad ng mga channel.

Konklusyon

Ang piliin ang pahayag in Go ay nagbibigay-daan para sa pagpili at pagpapatupad ng isang expression sa maraming expression gamit ang wait principle, kung saan ang statement ay hindi isasagawa hanggang sa makumpleto ang komunikasyon. Kasama sa mga nabanggit na alituntunin ang piliin ang pahayag pangunahing syntax at mga halimbawa.