select en Go
Esperar al canal que esté listo primero.
func race(fast, slow <-chan string) {
for i := 0; i < 2; i++ {
select {
case msg := <-fast:
fmt.Println("fast:", msg)
case msg := <-slow:
fmt.Println("slow:", msg)
case <-time.After(time.Second):
fmt.Println("timed out")
return
}
}
}
Cómo funciona
- Cada
caserecibe de un canal distinto. - Corre el primer caso listo; los empates se deciden al azar.
time.Afteraporta una rama de timeout.
Palabras clave y builtins usados aquí
casechanforfuncreturnselectstring
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 233
- Tokens
- 74
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 44 segundos.
Paso 1 de 3 en select; paso 8 de 25 en Concurrencia.