Вызов Golang

Вызов Golang Изучение

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

В вызовах select в Go нет ничего сложного.

Синтаксис аналогичен оператору switch:

select {
case ChannelOperation:
//
case ChannelOperation2:
//
case ChanneOperation3:
//
default:
// default case
}

Golang Select

Рассмотрим следующий пример кода, иллюстрирующий использование вызова Go select.

package main
import «fmt»
func main() {
channel1 := make(chan string)
channel2 := make(chan string)

go func() {
channel1 <— «channel 1»
}()
go func() {
channel2 <— «channel 2»
}()
select {
case msg11 := <-channel1:
fmt.Println(«Message recieved from: «, msg11)
case msg2 := <-channel2:
fmt.Println(«Message recieved from: «, msg2)
}
}

Если мы запустим предыдущий код, вы заметите, что мы получаем разные выходные данные при каждом запуске. Оператор select выбирает любой вывод, если все случаи готовы.

Мы можем выбрать случай по умолчанию, используя ключевое слово default, чтобы вызов select не блокировал основную горутину.

Пример показан ниже:

package main
import «fmt»
func main() {
channel1 := make(chan string)
channel2 := make(chan string)

go func() {
channel1 <— «channel 1»
}()
go func() {
channel2 <— «channel 2»
}()
select {
case msg11 := <-channel1:
fmt.Println(«Message recieved from: «, msg11)
case msg2 := <-channel2:
fmt.Println(«Message recieved from: «, msg2)
default:
fmt.Println(«Goroutines are not ready!»)
}
}

Предыдущая программа запустит случай по умолчанию, поскольку горутины готовы и не вернули никаких результатов.

Заключение

Мы можем использовать вызов Go select для выборочной выборки данных из нескольких каналов. Вызов select будет случайным образом выбирать данные, если все провайдеры готовы. Если ни один не готов, мы выполняем случай по умолчанию. Мы надеемся, что вы нашли эту статью. Ознакомьтесь с другими статьями Linux Hint, чтобы получить дополнительные советы и информацию.

Читайте также:  Pygame: видеоигры
Оцените статью
bestprogrammer.ru
Добавить комментарий