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
chan<- Tsolo envía;<-chan Tsolo recibe.- El compilador lo exige, así que un productor no puede leer su propia salida.
- Solo el emisor debería cerrar, y los tipos lo dejan evidente.
Palabras clave y builtins usados aquí
chancloseforfuncgointmakerangereturn
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.
Paso 4 de 4 en Canales; paso 7 de 25 en Concurrencia.