Sobes.tech
Junior

¿Qué hacer si se recibe un cero del canal de enteros?

sobes.tech AI

Respuesta de la IA

Obtener cero de un canal de enteros al cerrarlo significa que el canal está vacío. En este caso, el segundo valor devuelto por la operación <-ch será false.

// Crear un canal
ch := make(chan int, 1)
ch <- 1 // Insertar valor

// Leer valor
val, ok := <-ch
// val = 1, ok = true

close(ch) // Cerrar el canal

// Leer desde el canal cerrado
val, ok = <-ch
// val = 0, ok = false - se obtiene cero porque el canal está vacío después de cerrarlo

Es necesario verificar el segundo valor devuelto (ok) al leer desde un canal, para determinar si el valor fue recibido antes de cerrar el canal o si es un "valor cero" después del cierre.

// Ejemplo de manejo
def valor, abierto := <-canal
if !abierto {
	// Canal cerrado y vacío
	// Aquí se pueden realizar acciones relacionadas con la finalización del trabajo
} else {
	// Valor recibido con éxito antes del cierre
	// Procesar valor
}