Iterar canal

¿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