我在 select 语句中有一个默认原因,我什么都不想做,继续,但是将行留空会阻止语句中的任何事情发生
select {
case quit_status := <-quit:
if quit_status == true {
fmt.Printf("********************* GOROUTINE [%d] Received QUIT MSG\n", id)
return
}
default:
fmt.Printf("GOROUTINE [%d] step: %d, NO QUIT MSG\n", id, i)
}
最佳答案
default
select
中的案例语句旨在为 channel 读取和写入提供非阻塞 I/O。 default
中的代码每当任何情况下的 channel 都没有准备好读取/写入时,都会执行 case。
所以在你的情况下,default
如果退出 channel 无话可说,则执行 block 。
您可以简单地删除默认情况,它会阻止 quit_status := <-quit
大小写,直到 quit
中的值可用..这可能是你在这种情况下所追求的。
如果你想在 select 语句之后立即继续执行代码,你应该在一个单独的 goroutine 中运行这个 select 语句:
go func() {
select {
case quit_status := <-quit:
...
}
}()
// Execution continues here immediately.
关于python - Go - Python 的 "pass"相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452254/