问答详情
源自:7-4 Go语言-select语句

case的进入条件

close(ch4)后,下一次循环还会进入case语句吗?就算没有close,ch4也是空的了啊。这里不太明白

提问者:昵称叫啥都行 2017-08-01 18:02

个回答

  • tom_0
    2019-05-03 11:30:34

    其实case可以理解为尝试读取ch4,这时会发生两种情况,一种是读取到数据,一种是没读取到数据,如果读取不到数据,则default条件成立;如果读取到数据,这时又分为两种情况,一种是读取正常的数据,且通道也正常(ok为true);另外一种情况是通道关闭了,这时读取到的值是:e为零值,这里为int的0,然后ok为false,表示通道已经关闭。所以,如果没有close,第三次循环就会又进入 default 语句,然后ch4会再次被赋值,在第四次执行时,再次输出1

  • Uranux
    2017-08-02 16:46:11

    case和ch4是否关闭并没有关系,即使ch4关闭,循环依旧会继续执行。

    ch4为空和ch4被关闭是两种情况。