有人可以给我一些有关此代码的见解,为什么这会在for x:=range c
中出现死锁错误>
func main() {
c:=make(chan int,10)
for i:=0;i<5;i++{
go func(chanel chan int,i int){
println("i",i)
chanel <- 1
}(c,i)
}
for x:=range c {
println(x)
}
println("Done!")
}
有人可以给我一些有关此代码的见解,为什么会在x:= range c func main(){c:= make(chan int,10)中出现i:= 0; i <5; i ++ {go func(chanel chan int,i int){...
因为此:
您创建了五个goroutine,每个goroutine将一个整数值发送到通道。一旦所有这五个值都被写入,就不会再有其他goroutine写入通道了。
需要关闭频道以指示任务已完成。