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
}