golang for select break问题

请看下面的写法正确吗?

           for {
                select {
                case msg  := <-msgsChan:
                    msgs = append(msgs, qtmsg)
                default:
                    break
                }
            }

如果没有msg消息,这个break不会从for退出,就会出现死循cpu就上来了,正确的写法应该是

for loop:=true; loop {
    select {
    case <-msg:
        // do your task here
    case <-ctx.Done():
        loop = false
        break
    }
}

参考:
Does a break statement break from a switch/select?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容