Sobes.tech
Back to questions
Middle
5

Select в Go — для чего нужен?

Companies where asked
Магнум

Answer from AI

sobes.tech AI

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

Это особенно полезно для реализации конкурентных алгоритмов и обработки нескольких источников данных без блокировки.

Пример использования select:

ch1 := make(chan int)
ch2 := make(chan int)

go func() {
    ch1 <- 1
}()

go func() {
    ch2 <- 2
}()

select {
case val := <-ch1:
    fmt.Println("Получено из ch1:", val)
case val := <-ch2:
    fmt.Println("Получено из ch2:", val)
case <-time.After(time.Second):
    fmt.Println("Таймаут")
}

В этом примере select ждет данные из ch1 или ch2 и выводит, откуда пришло значение, или срабатывает таймаут.