select позволяет goroutine ждать несколько операций с каналами одновременно, продолжая работу с тем, который готов первым. Это как switch, но для каналов — необходимо для координации параллельных операций, таймаутов и отмены.
Базовый select — ожидание нескольких каналов
{
msg1 := <-ch1:
fmt.Println(, msg1)
msg2 := <-ch2:
fmt.Println(, msg2)
ch3 <- :
fmt.Println()
}
