Sobes.tech
Junior — Middle

¿En qué se diferencia obtener un valor nulo de un canal cerrado de obtener el mismo valor al crear un canal por cuenta propia y enviar datos a él?

sobes.tech AI

Respuesta de la IA

En Go, al leer de un canal, si el canal está cerrado y no hay más datos, la operación de lectura devuelve el valor cero del tipo del canal y false en el segundo valor devuelto (si se usa la sintaxis v, ok := <-ch). Esto indica que el canal está cerrado y no habrá más datos.

Si, en cambio, creas un canal, envías un valor nulo y lo lees, la operación de lectura devolverá ese valor nulo, pero ok será true, ya que el canal está abierto y se han recibido datos.

Resumen:

  • Canal cerrado sin datos: la lectura devuelve el valor cero + ok == false.
  • Canal abierto con valor nulo: la lectura devuelve el valor nulo + ok == true.

Esto permite distinguir entre el valor nulo real y la señal de cierre del canal.