专业编程基础技术教程

网站首页 > 基础教程 正文

每日一题(go篇) channel问题

ccvgpt 2024-08-06 12:52:05 基础教程 13 ℃

问题:一下代码分别会输出什么,为什么?欢迎大家在评论区说出自己的想法。

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被填满前不会阻塞。

每日一题(go篇) channel问题

答案 :

  1. fatal error: all goroutines are asleep - deadlock!
  2. fatal error: all goroutines are asleep - deadlock!
  3. 1

Tags:

最近发表
标签列表