golang for select break问题

2023-06-20  本文已影响0人  frank3

请看下面的写法正确吗?

           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?

上一篇 下一篇

猜你喜欢

热点阅读