Sobes.tech
Middle+

¿Quién debe cerrar el canal?

sobes.tech AI

Respuesta de la IA

Quien creó el canal debe cerrarlo y ya no tiene intención de enviar datos a través de él. Esto es importante para evitar pánicos al intentar enviar datos a un canal cerrado y para que los receptores puedan determinar correctamente el final del flujo de datos.

Reglas principales:

  • El remitente cierra el canal cuando ya no enviará más valores.
  • Los receptores no deben cerrar el canal.
  • El cierre del canal indica a los receptores que no habrá más datos.

Ejemplo:

func productor(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // Cerramos el canal después de enviar todos los datos
}

func consumidor(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Cuando el canal está cerrado, el ciclo termina
}

func main() {
    ch := make(chan int)
    go productor(ch)
    consumidor(ch)
}