在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
建议阅读:14.2协程间的信道 问题:为什么代码1会报死锁的错误,而代码2不会报错? 代码1: package main import ( "fmt" ) func main() { ch := make(chan int) ch <- 1 fmt.Println(<-ch) // 1 } 代码2: package main import ( "fmt" ) func main() { ch := make(chan int, 1) ch <- 1 fmt.Println(<-ch) // 1 } 解答: 因为代码1的channel没有buffer,而代码2的channel设置了buffer为1。 可以理解成,代码1执行到 ch <- 1 时只有main一个“协程”(其实是线程),并没有其他协程进行接收 ch |
请发表评论