Senior
¿Qué sucede al leer desde un canal cerrado en Go?
sobes.tech AI
Respuesta de la IA
Al leer desde un canal cerrado en Go, sucede lo siguiente:
- Si hay datos en el canal, se leerán normalmente.
- Si el canal está cerrado y no hay datos, la operación de lectura devolverá el valor cero del tipo del canal y
falseen el segundo valor devuelto (si se usa la forma con dos valores de retorno).
Ejemplo:
ch := make(chan int)
close(ch)
v, ok := <-ch
fmt.Println(v, ok) // Imprimirá: 0 false
Esto permite determinar que el canal está cerrado y no habrá más datos. Al leer desde un canal cerrado sin datos, la gorutina no se bloquea y recibe inmediatamente el valor cero.
Si se lee desde un canal cerrado sin verificar el segundo valor, se pueden obtener datos nulos, lo cual es importante tener en cuenta en la lógica de procesamiento.