Junior — Middle
Engedélyezett adatokat küldeni olyan csatornára, amely nem nyitott olvasásra és írásra?
sobes.tech MI
Válasz az MI-től
A Go nyelvben nem lehet adatokat küldeni olyan csatornára, amely nem nyitott írásra. Ha a csatorna zárva van (close(channel)), akkor a rá történő küldés pánikot (futásidejű pánikot) okoz.
Azonban, a zárt csatornából olvasni lehet: ekkor az olvasás a csatoratípus nullértékét és egy zászlót ad vissza, ami jelzi, hogy a csatorna zárt.
Példa:
ch := make(chan int)
close(ch)
// Zárt csatornából olvasni biztonságos
value, ok := <-ch // ok == false
// Zárt csatornára küldés pánikot okoz
ch <- 1 // panic: send on closed channel
Ezért, csak nyitott csatornákra lehet adatokat küldeni.