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.