我有一个函数,它监听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)
那么,如何停止无限循环并退出函数呢?
1条答案
按热度按时间3vpjnl9f1#
实际上,代码中没有无限循环,只是chan阻塞了代码。
您应该将值发送给chan以释放执行。
示例:https://go.dev/play/p/ujJjwBBsiP0