Sobes.tech
Senior

O que acontece ao gravar num canal não inicializado (nil)?

sobes.tech IA

Resposta da IA

No Go, escrever em um canal não inicializado (nil) leva ao bloqueio da goroutine indefinidamente, pois um canal nil não está pronto para receber ou enviar dados.

Exemplo:

var ch chan int // ch == nil

func main() {
    ch <- 1 // bloqueia indefinidamente, pois o canal é nil
}

Esse comportamento é às vezes usado para ativar/desativar canais dinamicamente em select, pois operações com canal nil nunca são executadas e bloqueiam a goroutine.