Sobes.tech
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 false in 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.