¿Cómo iterar un canal?
Es posible proteger un canal en cierto momento de la ejecución. Esto quiere decir que el canal se cierra, y no es posible agregar mas elementos.
Otra posibilidad, es iterar el buffer del canal.
package main
import (
"fmt"
)
func main() {
noticias := make(chan string, 3)
noticias <- "Francia tendra elecciones el dia de hoy"
noticias <- "En una votación cerrada Macron gana la presidencia"
noticias <- "Macron es el nuevo presidente de Francia"
close(noticias)
for noticia := range noticias {
fmt.Println(noticia)
}
}
En el ejemplo anterior…
- Creamos un nuevo canal llamado noticias.
- Agregamos 3 noticias al canal noticias.
- Cerramos el canal utilizando
close
. - Iteramos el canal utilizando un for.
Si se intenta agregar otro string al canal noticias una vez cerrado, el compilador mostrará una excepción.
panic: send on closed channel