Middle
Kuidas tekitada paanikat, töötades kanali with? Mida juhtub nil-kanali ja suletud kanali operatsioonide ajal?
sobes.tech AI
Vastus AI-lt
In Go, panic occurs in the following cases when working with channels:
- Sending a value to a closed channel (
chan <- value) causes a panic. - Closing an already closed channel (
close(chan)) causes a panic.
Regarding nil channels:
- Send and receive operations on a nil channel block forever (deadlock), but do not cause panic.
Example:
var ch chan int // nil channel
// <-ch // blocks forever
// ch <- 1 // blocks forever
ch = make(chan int)
close(ch)
// ch <- 1 // panic: send on closed channel
close(ch) // panic: close of already closed channel