typestar

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

  1. Cada case recibe de un canal distinto.
  2. Corre el primer caso listo; los empates se deciden al azar.
  3. time.After aporta una rama de timeout.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en select; paso 8 de 25 en Concurrencia.

← Anterior Siguiente →

select en otros lenguajes