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