如下代码, 可以直接跑
```
func Count(ch chan int, i int) {
fmt.Println("counting ", i)
ch <- 1
}
func main() {
chs := make([]chan int, 10)
for i, _:= range chs {
chs[i] = make(chan int)
go Count(chs[i], i)
}
for _, ch := range chs {
<-ch
}
}
但是换成下面这种就不行了,报死锁的错误
func main() {
chs := make([]chan int, 10)
for i, ch:= range chs {
ch = make(chan int)
go Count(ch, i)
}
for _, ch := range chs {
<-ch
}
}
```
go 版本是1.13.4
小白一个,不是很明白, 盼望大佬解惑.....
更多评论
多谢大佬指点, 在for _, ch := range chs 这段代码读数组的时候读的都是没初始化的通道,因为初始化的ch = make(chan int) 根本就没有放到数组里面去,导致的死锁
补充一篇 for range的文章
https://xiaozhou.net/something-about-range-of-go-2016-04-10.html
#2