У овом чланку ћемо истражити како га користити изаберите изјаву на Голанг-у и пружите примере који ће вам помоћи да постигнете паралелизам, конкурентност и синхронизацију у Го програмима.
Како користити Селецт Статемент у Голангу?
Слично наредби свитцх, тхе изаберите изјаву дозвољава нам да изаберемо и извршимо један израз међу многим изразима, али примарна разлика између изаберите а прекидач је то изаберите изјаву функционише на принципу чекања, што значи да се изаберите изјаву неће се извршити док се комуникација не заврши.
Овде се комуникација односи на слање и примање података преко било ког канала. Када је комуникација завршена, врши се следећа провера, омогућавајући нам да видимо да изјава за избор Го језика у потпуности зависи од канала.
Синтакса за Селецт Статемент
Једноставна синтакса која се користи за изаберите изјаву коришћење Го језика је приказано у наставку:
изаберите {
случај канал_1 :
// код за извршавање када је канал_1 спреман
случај канал_2 :
// код за извршавање када канал_2 буде спреман
случај канал_3 :
// код за извршење када канал_3 буде спреман
случај канал_4 :
// код за извршавање када је канал_4 спреман
Уобичајено :
// код за извршење ако ниједан канал није спреман
}
овде:
- У оквиру а изаберите изјаву , сваки случај представља операцију канала, која може бити операција пријема или операција слања.
- Тхе изаберите изјаву чека док један од случајева не буде спреман, а затим га покреће и придружени исказ случаја.
- Насумично бира канал у случају да постоји више канала спремних за извршење.
Како направити канал у Голангу
Да би креирали канал у Го-у, корисници могу да користе функцију маке коју прати цхан кључну реч и наведите тип канала, који може бити инт, стринг или други.
гл := направити ( чан тип )Имплементирајте Селецт Статемент у Голанг
Овде ћемо дати неколико примера који ће вам помоћи да научите основе коришћења изаберите изјаву у Голангу.
Пример 1
Следећи пример за изаберите изјаву показује како функционише када су оба канала спремна за извршење.
пакет главниувоз 'фмт'
фунц маин ( ) {
на једном := направити ( цхан инт )
стр := направити ( цхан стринг )
го цхан_нум ( на једном )
го цхан_стр ( стр )
изаберите {
случај Цх1 := <- на једном :
фмт. Принтлн ( „Подаци о каналу:“ , Цх1 )
случај Цх2 := <- стр :
фмт. Принтлн ( „Подаци о каналу:“ , Цх2 )
}
}
фунц цхан_нум ( нум цхан инт ) {
на једном <- 67
}
фунц цхан_стр ( стр цхан стринг ) {
стр <- 'Линукс'
}
У горњем примеру, направили смо два канала, на једном, и стр и користили смо функције Го цхан_нум() за слање података на број канала и цхан_стр() за слање података на стр канал. Пошто програм садржи два различита канала, користили смо изаберите изјаву да изврши један од њих.
Случај Цх1 чита вредност из број канала и приказује га. Слично, случај Цх2 враћа вредност из стр канал. Горњи програм враћа излаз канала који је спреман за употребу. Излаз
Пример 2
Ако желите да додате кашњење на канал и вратите излаз другог канала, можете користити тиме.слееп() функција на одређеном каналу. Ово вам омогућава да одштампате излаз другог канала на конзолу. Ево примера таквог случаја.
пакет главниувоз (
'фмт'
'време'
)
фунц маин ( ) {
на једном := направити ( цхан инт )
стр := направити ( цхан стринг )
го цхан_нум ( на једном )
го цхан_стр ( стр )
изаберите {
случај Цх1 := <- на једном :
фмт. Принтлн ( „Подаци о каналу:“ , Цх1 )
случај Цх2 := <- стр :
фмт. Принтлн ( „Подаци о каналу:“ , Цх2 )
}
}
фунц цхан_нум ( нум цхан инт ) {
на једном <- 67
}
фунц цхан_стр ( стр цхан стринг ) {
време . Спавај ( 5 * време . Друго )
стр <- 'Линукс'
}
У горе наведеном коду користили смо тиме.Слееп() функција унутар цхан_стр() функција. Само нум канал је спреман за извршење првих 5 секунди. Као резултат тога, изаберите изјаву покреће случај Цх1 .
Излаз
Белешка: Можете додати кашњење на оба канала да бисте одложили извршавање канала.
Закључак
Тхе изаберите изјаву ин Го омогућава избор и извршење једног израза од многих израза користећи принцип чекања, где се наредба неће извршити док се комуникација не заврши. Горе наведене смернице укључују изаберите изјаву основна синтакса и примери.