Sobes.tech
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 false otrajā 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.