Senior
Kas notiek, lasot un rakstot slēgtā kanālā?
sobes.tech AI
Atbilde no AI
Go, strādājot ar kanāliem:
-
Lasīšana no slēgta kanāla: Ja kanāls ir slēgts un tajā nav datu, lasīšanas operācija atgriež kanāla tipa nullvērtību un
falseotrajā atgrieztajā vērtībā (ja tā tiek izmantota), kas signalizē par kanāla slēgšanu. -
Rakstīšana slēgtā kanālā: Mēģinājums rakstīt slēgtā kanālā izraisa paniku (
panic). Tas ir izpildlaika kļūda.
Piemērs:
ch := make(chan int)
close(ch)
// Lasīšana
v, ok := <-ch // ok == false, v == 0
// Rakstīšana
ch <- 1 // panic: send on closed channel
Tādējādi, slēgts kanāls var tikt droši lasīts tik ilgi, kamēr tajā ir dati, bet uz to nevar rakstīt.