typestar

Dirección de canales en Go

El tipo de un parámetro puede restringir un canal a enviar o a recibir.

func produce(out chan<- int, count int) {
    for i := 1; i <= count; i++ {
        out <- i * i
    }
    close(out)
}

func consume(in <-chan int) int {
    total := 0
    for value := range in {
        total += value
    }
    return total
}

func pipeline() int {
    numbers := make(chan int)
    go produce(numbers, 4)
    return consume(numbers)
}

Cómo funciona

  1. chan<- T solo envía; <-chan T solo recibe.
  2. El compilador lo exige, así que un productor no puede leer su propia salida.
  3. Solo el emisor debería cerrar, y los tipos lo dejan evidente.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
299
Tokens
87
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 52 segundos.

Escribe este fragmento

Paso 4 de 4 en Canales; paso 7 de 25 en Concurrencia.

← Anterior Siguiente →