Middle+
Sob quais condições a leitura de um canal será bloqueada para sempre? O que acontece ao escrever em um canal nil? Ao escrever em um canal fechado?
sobes.tech IA
Resposta da IA
-
A leitura de um canal será bloqueada para sempre se o canal estiver vazio e ninguém pretende escrever nele (por exemplo, todos os remetentes estão fechados ou ausentes).
-
A escrita em um canal nil (um canal igual a nil) sempre é bloqueada para sempre, pois o canal nil não está inicializado e não pode aceitar dados.
-
A escrita em um canal fechado provoca um pânico (panic) em Go, pois isso é proibido e considerado um erro em tempo de execução.
Exemplo:
var ch chan int // canal nil
// <-ch // leitura do canal nil fica bloqueada para sempre
// ch <- 1 // escrita em um canal nil fica bloqueada para sempre
ch = make(chan int)
close(ch)
// ch <- 2 // panic: envio em canal fechado