Canales en Go
Tuberías tipadas que llevan valores entre goroutines.
func produce(n int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for i := 1; i <= n; i++ {
out <- i * i
}
}()
return out
}
func consume(in <-chan int) int {
total := 0
for v := range in {
total += v
}
return total
}
Cómo funciona
- Un productor envía y luego hace
closedel canal. <-chan intes un tipo de canal de solo recepción.rangesobre un canal termina cuando este se cierra.
Palabras clave y builtins usados aquí
chanclosedeferforfuncgointmakerangereturn
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 235
- Tokens
- 77
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 46 segundos.
Paso 3 de 4 en Canales; paso 6 de 25 en Concurrencia.