Go语言 如何退出通道无限循环的函数

f1tvaqid  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(153)

我有一个函数,它监听RabbitMQ来消费一个消息。在某个时候,我想停止监听,关闭通道,退出这个函数。

func WaitForConfirm(expectedLen int){
    count := 0
    forever := make(chan bool)

    go func() {
        for i := 0; i < 5; i++ {
            count++
            if count == expectedLen {
                // HERE I WANT TO EXIT THE FUNCTION COMPLETELY
            }
        }
    }()

    <-forever
}

哦,顺便说一句,我这样调用这个函数:

go WaitForConfirm(2)

那么,如何停止无限循环并退出函数呢?

3vpjnl9f

3vpjnl9f1#

实际上,代码中没有无限循环,只是chan阻塞了代码。
您应该将值发送给chan以释放执行。
示例:https://go.dev/play/p/ujJjwBBsiP0

相关问题