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