Sobes.tech
Junior — Middle

Kun je gegevens naar een kanaal sturen dat de waarde nil heeft?

sobes.tech AI

Antwoord van AI

In Go kan je geen gegevens naar een kanaal sturen als deze nil is. Een poging om een waarde naar een nil-kanaal te sturen, zal de goroutine voor altijd blokkeren, omdat zo'n kanaal niet geïnitialiseerd is en geen gegevens kan ontvangen.

Voorbeeld:

var ch chan int // ch == nil

go func() {
    ch <- 1 // blokkeert voor altijd
}()

// het programma zal vastlopen

Om blokkering te voorkomen, moet je het kanaal initialiseren voordat je het gebruikt:

ch := make(chan int)
ch <- 1 // werkt correct

Als het kanaal nil kan zijn, controleer dan de waarde voordat je gegevens verzendt of gebruik select met default om blokkering te voorkomen.