Sobes.tech
Middle

Kaip sukelti paniką dirbant su kanalu? Kas vyksta su operacijomis su nil-kanalu ir uždaru kanalu?

sobes.tech AI

Atsakymas iš AI

Go kalboje, panika įvyksta šiais atvejais:

  • Siunčiant reikšmę uždarytam kanalui (chan <- value) įvyksta panika.
  • Uždarius jau uždarytą kanalą (close(chan)) įvyksta panika.

Dėl nil-kanalų:

  • Operacijos siųsti ir gauti su nil-kanalu blokuojasi amžinai (deadlock), bet nesukelia panikos.

Pavyzdys:

var ch chan int // nil-kanalas

// <-ch // blokuojasi amžinai
// ch <- 1 // blokuojasi amžinai

ch = make(chan int)
close(ch)

// ch <- 1 // panic: siuntimas uždarytam kanalui

close(ch) // panic: jau uždaryto kanalo uždarymas