Sobes.tech
Senior

Mi történik, amikor olvasunk és írunk egy zárt csatornába?

sobes.tech MI

Válasz az MI-től

Go-ban, csatornákkal való munka közben:

  • Zárt csatornából olvasás: Ha a csatorna zárt és nincs benne adat, az olvasási művelet a csatorna típusának nullértékét és false-t ad vissza a második értékben (ha használják), ami a csatorna zártságát jelzi.

  • Zárt csatornába írás: A zárt csatornába való írás katasztrófát (panic) okoz. Ez futás közbeni hiba.

Példa:

ch := make(chan int)
close(ch)

// Olvasás
v, ok := <-ch // ok == false, v == 0

// Írás
ch <- 1 // panic: send on closed channel

Ezért, egy zárt csatornát biztonságosan lehet olvasni, amíg vannak benne adatok, de nem lehet írni bele.