Sobes.tech
Senior
22

Расскажи про оператор select, что он делает и для чего нужен?

Компании, где спрашивали
sber tech

Ответ от нейросети

sobes.tech AI

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

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

select {
case msg := <-ch1:
    fmt.Println("Получено из ch1:", msg)
case ch2 <- 42:
    fmt.Println("Отправлено в ch2")
case <-time.After(time.Second * 5):
    fmt.Println("Таймаут")
}

Здесь select ждет, пока либо в ch1 появится сообщение, либо можно будет отправить число в ch2, либо пройдет 5 секунд таймаута. Это позволяет эффективно управлять несколькими каналами без блокировки.