Sobes.tech
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