Go · Avançado · Inglês · Técnico
nil channel
Channel não inicializado, valor nil. Enviar ou receber dele bloqueia para sempre, o que é útil dentro de um select para desativar um case dinamicamente.
Onde usar
Ao atribuir nil à variável do channel depois que ele fechou, o select deixa de escolher aquele case. Evita laço ocupado em código que mescla duas fontes de dados.
Em código
var ch chan int // nil
select {
case v := <-ch: // nunca escolhido
fmt.Println(v)
default:
fmt.Println("nil bloqueia")
}Exemplos
Set the channel to nil so select stops choosing that case.
Atribua nil ao channel para o select parar de escolher aquele case.
The goroutine hangs forever because the channel is nil.
A goroutine trava para sempre porque o channel é nil.
Cuidado
Esquecer o make deixa o channel nil e a goroutine bloqueada sem erro; é fonte comum de goroutine presa.