Sobes.tech
Middle

Jak vyvolat paniku při práci s kanálem? Co se děje při operacích s nil-kanálem a uzavřeným kanálem?

sobes.tech AI

Odpověď od AI

V Go při práci s kanály dochází k panice v následujících případech:

  • Odeslání hodnoty na uzavřený kanál (chan <- value) způsobí paniku.
  • Uzavření již uzavřeného kanálu (close(chan)) způsobí paniku.

Co se týče nil-kanálů:

  • Operace odeslání a příjmu s nil-kanálem se navždy blokují (deadlock), ale nezpůsobují paniku.

Příklad:

var ch chan int // nil-kanál

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

ch = make(chan int)
close(ch)

// ch <- 1 // panika: odeslání na uzavřený kanál

close(ch) // panika: uzavření již uzavřeného kanálu