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