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.