Junior — Middle
Is het toegestaan om gegevens te sturen naar een kanaal dat niet open is voor lezen en schrijven?
sobes.tech AI
Antwoord van AI
In Go is het niet mogelijk om gegevens te verzenden naar een kanaal dat niet open is voor schrijven. Als het kanaal gesloten is (met close(channel)), zal een poging om gegevens te verzenden een panic veroorzaken (runtime panic).
Het lezen uit een gesloten kanaal is echter mogelijk: hierbij geeft de lezing de nulwaarde van het kanaaltype en een vlag die aangeeft dat het kanaal gesloten is.
Voorbeeld:
ch := make(chan int)
close(ch)
// Lezen uit een gesloten kanaal is veilig
value, ok := <-ch // ok == false
// Verzenden naar een gesloten kanaal veroorzaakt een panic
ch <- 1 // panic: send on closed channel
Dus, gegevens kunnen alleen naar open kanalen worden verzonden.