不会退出一直在打印1

来源:11-1 channel

慕斯5059536

2022-08-03

func chanDemo() {
	c := make(chan int)
	go func() {
		for {
			//n := <-c
			//fmt.Println(n)
			fmt.Println(1)
		}
	}()
	c <- 1
	c <- 2
}

请问老师,上面的代码执行函数之后,不会退出一直在打印1, 这原理应该怎么解释?

写回答

1回答

ccmouse

2022-08-15

这是必然的。

main运行到c<-1处,会阻塞,等待别人从c接收数据。但是上方的goroutine接收数据处被注释掉了,所以只能不断由fmt.Println(1)输出1

0
2
ccmouse
回复
慕雪5492051
是这样的
2022-09-14
共2条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程