select con default en Go
Un caso default vuelve el select no bloqueante, que es como se sondea.
func poll(jobs chan int) string {
select {
case job := <-jobs:
return fmt.Sprintf("got %d", job)
default:
return "nothing waiting"
}
}
func trySend(jobs chan int, job int) bool {
select {
case jobs <- job:
return true
default:
return false // cola llena, se descarta
}
}
Cómo funciona
- Sin default, select espera a que un caso esté listo.
- Con default, toma esa rama de inmediato cuando nada está listo.
- Los casos listos se eligen al azar, así que ninguno se queda sin turno.
Palabras clave y builtins usados aquí
boolcasechandefaultfuncintreturnselectstring
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 271
- Tokens
- 60
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 36 segundos.
Paso 2 de 3 en select; paso 9 de 25 en Concurrencia.