Senior
Wat gebeurt er bij lezen en schrijven in een gesloten kanaal?
sobes.tech AI
Antwoord van AI
In Go, bij het werken met kanalen:
-
Lezen uit een gesloten kanaal: Als het kanaal gesloten is en er geen gegevens in zitten, geeft de leesoperatie de nulwaarde van het kanaaltype en
falsein de tweede geretourneerde waarde (indien gebruikt), wat aangeeft dat het kanaal gesloten is. -
Schrijven naar een gesloten kanaal: Poging om naar een gesloten kanaal te schrijven, leidt tot een panic (
panic). Dit is een runtime-fout.
Voorbeeld:
ch := make(chan int)
close(ch)
// Lezen
v, ok := <-ch // ok == false, v == 0
// Schrijven
ch <- 1 // panic: send on closed channel
Dus, een gesloten kanaal kan veilig worden gelezen zolang er gegevens in zitten, maar er mag niet naar worden geschreven.