Sobes.tech
Middle+

¿Quién debe cerrar el canal: el escritor o el lector?

sobes.tech AI

Respuesta de la IA

En Go, el canal debe ser cerrado por el escritor (sender), no por el lector (receiver). Cerrar un canal indica que no se enviarán más valores, y los lectores pueden terminar la lectura correctamente al detectar que el canal está cerrado.

Si el lector cierra el canal y el escritor continúa intentando enviar, esto provocará un pánico (panic). Por lo tanto, la responsabilidad de cerrar el canal recae en quien lo escribe.

Ejemplo:

ch := make(chan int)
func() {
    defer close(ch) // el escritor cierra el canal
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // el lector lee hasta que el canal se cierra
}