Sobes.tech
Middle

Ako vyvolať paniku pri práci s kanálom? Čo sa deje pri operáciách s nil-kanálom a zatvoreným kanálom?

sobes.tech AI

Odpoveď od AI

V Go, k panike pri práci s kanálmi dochádza v týchto prípadoch:

  • Odoslanie hodnoty na zatvorený kanál (chan <- value) spôsobí paniku.
  • Zatvorenie už zatvoreného kanála (close(chan)) spôsobí paniku.

Čo sa týka nil-kanálov:

  • Operácie odoslania a prijatia s nil-kanálom sa navždy blokujú (deadlock), ale nespôsobujú paniku.

Príklad:

var ch chan int // nil-kanál

// <-ch // navždy blokuje
// ch <- 1 // navždy blokuje

ch = make(chan int)
close(ch)

// ch <- 1 // panika: odoslanie na zatvorený kanál

close(ch) // panika: zatvorenie už zatvoreného kanála