第三次循环不明白

来源:7-4 Go语言-select语句

慕仰5549039

2018-08-31 16:57

以下是我的理解,问题再第三次循环上没想通,求指导:

第一次循环走的是default是因为通道是空

第二次循环走的是case,因为第一次循环后插入了值通道有一个缓存,并未取出

第三次循环走的为什么还是case?通道虽然关闭里但是可以读我明白,可是通道的值在第二次循环被取出了,通道在第三次循环不应该是空嘛,如果为空为什么没走default?而是走了case,case不应该实在通道不为空的情况下可以走嘛??


求指导 !多谢!

写回答 关注

2回答

  • 慕粉1473588917
    2019-08-20 17:39:08

    <- ch4 应该是取出了值吧,可以去测试一下

  • 想不睡
    2018-09-01 10:30:18

    第二次通道的值不是被取出,只是被读取,里面还是有值,第三次因为通道关闭了无法读取

    慕仰5549...

    <-chan不应该是取出通道的值嘛,如果第二次只是被读取的话,不关闭通道的条件下,那应该第三次还可以读取出来,可是这发生了死锁诶。 我目前认为是第二次取出了,然后通道被关闭,这样第三次取出的是通道的零值,轮询进case,e,ok中e为零值也就是0,但是ok是false,所以第三次打印了end

    2018-09-03 14:04:18

    共 1 条回复 >

Go语言第一课

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

107752 学习 · 148 问题

查看课程

相似问题