typestar

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

  1. Sin default, select espera a que un caso esté listo.
  2. Con default, toma esa rama de inmediato cuando nada está listo.
  3. Los casos listos se eligen al azar, así que ninguno se queda sin turno.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en select; paso 9 de 25 en Concurrencia.

← Anterior Siguiente →