老师这个运行能打印字符,但是有错误,找不到问题

来源:10-1 goroutine

yangxinxin

2018-08-17

// 分别打印 a A b B c C ....
func main() {
  ch := make(chan int)
  go func(ch chan int) {
     lowerCharFrom := 97
     upCharFrom := 65
     for i := 0; i < 26; i++ {
        ch <- lowerCharFrom + i
        ch <- upCharFrom + i
     }
  }(ch)
  for v := range ch {
     fmt.Println(string(v))
  }
}


报错:fatal error: all goroutines are asleep - deadlock!             

goroutine 1 [chan receive]:

写回答

1回答

ccmouse

2018-08-19

一头用了range来接收,那么发送方发完需要去close这个channel。我课上会有说到。

0
3
hen_nam
回复
yangxinxin
第一段代码,main 函数从通道接收所有数据后会阻塞,没有退出条件。
2021-12-26
共3条回复

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

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

5995 学习 · 1909 问题

查看课程