Как использовать оператор Select в Golang?

Kak Ispol Zovat Operator Select V Golang



А оператор выбора в Golang позволяет разработчикам синхронизировать и обмениваться данными между подпрограммами, каналами и потоками данных Go. Это позволяет программе Go ожидать одновременно несколько операций канала и выполнять первую готовую операцию.

В этой статье мы рассмотрим, как использовать оператор выбора в Golang и предоставить примеры, которые помогут вам достичь параллелизма, параллелизма и синхронизации в программах Go.

Как использовать оператор Select в Golang?

Подобно оператору switch, оператор выбора позволяет нам выбрать и выполнить одно выражение среди множества выражений, но основная разница между выбирать и переключатель в том, что оператор выбора работает по принципу ожидания, т. е. оператор выбора не будет выполняться, пока связь не будет завершена.







Здесь связь относится к отправке и получению данных по любому заданному каналу. Когда связь завершена, выполняется следующая проверка, позволяющая увидеть, что оператор select языка Go полностью зависит от канала.



Синтаксис оператора Select

Простой синтаксис, используемый для оператор выбора с использованием языка Go показано ниже:



выбирать {
случай канал_1 :
// код для выполнения, когда канал_1 готов
случай канал_2 :
// код для выполнения, когда канал_2 готов
случай канал_3 :
// код для выполнения, когда канал_3 готов
случай канал_4 :
// код для выполнения, когда канал_4 готов
по умолчанию :
// код для выполнения, если ни один из каналов не готов
}

Здесь:





  • В течение оператор выбора , каждый случай представляет операцию канала, которая может быть операцией приема или операцией отправки.
  • оператор выбора ждет, пока один из вариантов не будет готов, а затем запускает его и соответствующий оператор case.
  • Он случайным образом выбирает канал, если есть несколько каналов, готовых к выполнению.

Как создать канал в Golang

Чтобы создать канал в Go, пользователи могут использовать функцию make, за которой следует Чан ключевое слово и укажите тип канала, который может быть int, string или другим.

ч '=' делать ( тип тян )

Реализовать оператор Select в Golang

Здесь мы приведем несколько примеров, которые помогут вам изучить основы использования оператор выбора в Голанге.



Пример 1

Следующий пример из оператор выбора демонстрирует, как он работает, когда оба канала готовы к выполнению.

основной пакет

Импортировать 'ФМТ'

основная функция ( ) {

на одной '=' делать ( Чан инт )

ул '=' делать ( чан строка )

иди chan_num ( на одной )

иди chan_str ( ул )

выбирать {

случай Ч1 '=' <- на одной :

ФМТ. Распечатать ( 'Данные канала:' , Ч1 )

случай Ч2 '=' <- ул :

ФМТ. Распечатать ( 'Данные канала:' , Ч2 )

}

}

func chan_num ( номер чан инт ) {

на одной <- 67

}

функция chan_str ( ул чан строка ) {

ул <- 'Линукс'

}

В приведенном выше примере мы создали два канала, на одной, и ул и мы использовали функции Go chan_num() для отправки данных в канал num и chan_str() для отправки данных в канал str. Поскольку программа содержит два разных канала, мы использовали оператор выбора выполнить один из них.

Случай Ч1 считывает значение из номер канала и отображает его. Аналогично, случай Ч2 возвращает значение из ул канал. Приведенная выше программа возвращает вывод канала, который готов к использованию. Выход

Пример 2

Если вы хотите добавить задержку к каналу и вернуть вывод другого канала, вы можете использовать время сна() работать на указанном канале. Это позволяет вам распечатать вывод другого канала на консоль. Вот пример такого случая.

основной пакет

Импортировать (

'ФМТ'

'время'

)

основная функция ( ) {

на одной '=' делать ( Чан инт )

ул '=' делать ( чан строка )

иди chan_num ( на одной )

иди chan_str ( ул )

выбирать {

случай Ч1 '=' <- на одной :

ФМТ. Распечатать ( 'Данные канала:' , Ч1 )

случай Ч2 '=' <- ул :

ФМТ. Распечатать ( 'Данные канала:' , Ч2 )

}

}

func chan_num ( номер чан инт ) {

на одной <- 67

}

функция chan_str ( ул чан строка ) {

время . Спать ( 5 * время . Второй )

ул <- 'Линукс'

}

В приведенном выше коде мы использовали время.Сон() функция внутри chan_str() функция. Только канал num готов к выполнению в течение первых 5 секунд. В результате оператор выбора ведет дело Ч1 .

Выход

Примечание: Вы можете добавить задержку к обоим каналам, чтобы отложить выполнение каналов.

Заключение

оператор выбора в Go позволяет выбирать и выполнять одно выражение из множества выражений, используя принцип ожидания, когда оператор не будет выполняться до тех пор, пока связь не будет завершена. Вышеупомянутые руководящие принципы включают оператор выбора основной синтаксис и примеры.