英文:
How to exit a function with infinite loop of channel
问题
你可以使用return
语句来停止无限循环并退出函数。在你想要退出函数的地方,使用return
即可。在你的代码中,你可以这样修改:
func WaitForConfirm(expectedLen int) {
count := 0
forever := make(chan bool)
go func() {
for i := 0; i < 5; i++ {
count++
if count == expectedLen {
// 在这里使用 return 来退出函数
return
}
}
}()
<-forever
}
这样,当 count
的值等于 expectedLen
时,循环会被终止,函数也会退出。
英文:
I have this function that listens to RabbitMQ to consume a message.
And at some point, I want to stop listening and close the channel and quit the function.
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
}
Oh, btw, I call this function like this:
go WaitForConfirm(2)
So, how can I stop the infinite loop and exit the function?
答案1
得分: 2
实际上,你的代码中没有无限循环,只是 chan 阻塞了你的代码。
你应该向 chan 发送值以释放执行。
这里有一个示例:https://go.dev/play/p/ujJjwBBsiP0
英文:
Actually, there is no infinite loop in your code and just chan is blocking your code.
You should send value to chan to release execution.
Here Example: https://go.dev/play/p/ujJjwBBsiP0
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论