版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/KeenCryp/article/details/81430817
Q:使用channel发生死锁报错信息
fatal error: all goroutines are asleep - deadlock!
main0.go
package main
import "fmt"
func main() {
ch := make(chan int)
for i:=0;i<4;i++{
ch<-i
}
for e := range ch {
fmt.Println(e)
}
}
Solution 1:关闭chanal
main1.go
package main
import "fmt"
func main() {
ch := make(chan int)
go func(){
defer close(ch)
for i:=0;i<4;i++{
ch<-i
}
}()
for e := range ch {
fmt.Println(e)
}
}
//output
0
1
2
3
有关channel死锁以及用for range迭代channel的更多内容可以参见Go教程:通道。