问题:一下代码分别会输出什么,为什么?欢迎大家在评论区说出自己的想法。
func main() { c := make(chan int) c<-1 fmt.Println(<-c) }
func main() { c := make(chan int,1) c<-1 c<-2 fmt.Println(<-c) }
func main() { c := make(chan int,1) c<-1 fmt.Println(<-c) }
知识点: 创建无缓存的channel时,代码会在读取的地方阻塞。导致代码出现死锁,但是创建带缓存的channel时,在channel被填满前不会阻塞。
答案 :
- fatal error: all goroutines are asleep - deadlock!
- fatal error: all goroutines are asleep - deadlock!
- 1