ExpertiDict

Go · Avançado · Inglês · Técnico

nil channel

/nɪl ˈtʃæn.əl/substantivo

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.

Veja também

Todos os termos de Go