Junior — Middle
Wat gebeurt er als je probeert gegevens te lezen uit een kanaal dat nog niet is geïnitialiseerd?
sobes.tech AI
Antwoord van AI
Als je probeert gegevens uit een in Go niet geïnitialiseerd kanaal te lezen (dat wil zeggen, nil is), wordt de leesoperatie voor altijd geblokkeerd. Dit zorgt ervoor dat de goroutine die probeert te lezen van dat kanaal vastloopt, omdat het kanaal niet bestaat en geen gegevens kan doorgeven.
Voorbeeld:
var ch chan int // ch is nil
func main() {
fmt.Println(<-ch) // wordt voor altijd geblokkeerd
}
Om dit te voorkomen, moet het kanaal worden geïnitialiseerd met make, bijvoorbeeld: ch := make(chan int).