Select

Select esperas em vários canais. Isso pode ser combinado com goroutines. Select é como a instrução switch, mas para canais.

Por exemplo, duas rotinas são iniciadas simultaneamente e cada uma grava dados em um canal. Por ser executado simultaneamente, pode acontecer que uma tarefa seja concluída antes da outra.


select {
case msg1 := <- ch1:
    // ...
case <- ch2:
    // ...
}

                        

A instrução select fará com que o programa espere que ambas as tarefas sejam concluídas, mas isso não significa que ambas as tarefas sejam sempre concluídas em ordem cronológica.

select.go