Sobes.tech
Junior — Middle

Qual é a diferença entre obter um valor nulo de um canal fechado e obter o mesmo valor ao criar um canal por conta própria e enviar dados para ele?

sobes.tech IA

Resposta da IA

Em Go, ao ler de um canal, se o canal estiver fechado e não houver mais dados, a operação de leitura retorna o valor zero do tipo do canal e false no segundo valor retornado (se usar a sintaxe v, ok := <-ch). Isso sinaliza que o canal está fechado e não haverá mais dados.

Se, por outro lado, você criar um canal, enviar um valor nulo e lê-lo, a operação de leitura retornará esse valor nulo, mas ok será true, pois o canal está aberto e os dados foram recebidos.

Resumo:

  • Canal fechado sem dados: leitura retorna o valor zero + ok == false.
  • Canal aberto com valor nulo: leitura retorna o valor nulo + ok == true.

Isso permite distinguir entre o valor nulo real e o sinal de fechamento do canal.