Sobes.tech
Middle

Kako izazvati paniku prilikom rada sa kanalom? Šta se dešava prilikom operacija sa nil-kanalom i zatvorenim kanalom?

sobes.tech АИ

Одговор од АИ

U Go-u, panika prilikom rada sa kanalima javlja se u sledećim slučajevima:

  • Slanje vrednosti na zatvoreni kanal (chan <- value) izaziva paniku.
  • Zatvaranje već zatvorenog kanala (close(chan)) izaziva paniku.

Što se tiče nil-kanala:

  • Operacije slanja i primanja sa nil-kanalom se zauvek blokiraju (deadlock), ali ne izazivaju paniku.

Primer:

var ch chan int // nil-kanal

// <-ch // zauvek blokira
// ch <- 1 // zauvek blokira

ch = make(chan int)
close(ch)

// ch <- 1 // panika: slanje na zatvoreni kanal

close(ch) // panika: zatvaranje već zatvorenog kanala