Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом осуществляется чтение данных из нескольких потоков или каналов одновременно?

Компании, где спрашивали
МТС DigitalМТС Digital

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

sobes.tech AI

В Go для одновременного чтения из нескольких каналов используется оператор 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)
}

Таким образом, select блокируется, пока не появятся данные в одном из каналов, и затем выполняет соответствующий case. Это позволяет эффективно обрабатывать несколько потоков данных одновременно.