作者回复: struct{}表示空结构,第二个表示实例化这个空结构
作者回复: func isCancelled(cancelChan chan struct{}) bool { select { case <-cancelChan: return true default: return false } } close(cancelChan)会使所有处于处于阻塞等待状态的,消息接收者(<-cancelChan)返回,所以上面的代码case <-cancelChan分支就会执行下去,返回true
作者回复: 这是因为ch<-"Hi"这一句就被阻塞了,都没有办法执行到下面的接收部分
作者回复: 赞啊。给大家分享一下。
作者回复: 第一个是方法定义(这里没有入参定义),第二个代表方法调用
作者回复: func isCancelled(cancelChan chan struct{}) bool { select { case <-cancelChan: return true default: return false } } 注意一下 select下的default,<-cancelChan阻塞的时候,就会立即运行default分支
作者回复: close chan也会使得等待读取操作马上返回
作者回复: 应该没有问题的,看看你是不是把cancel后面的sleep删除了
作者回复: close有一种类似广播的效果,所有处于接收等待状态的接收者都会立即返回。你在仔细看一遍视频,并试试示例代码就清楚了。