假设我们在两个 channel 上进行选择。运行几次后,其中一个 channel 关闭。我怎样才能跳出选择?
package main
import (
"fmt"
)
func main() {
ch := make(chan int)
closed := make(chan bool, 1)
go func() {
for i := 0; i < 5; i++ {
ch <- 1
}
close(ch)
}()
for {
select {
case v := <-ch:
fmt.Printf("v is %v\n", v)
case <-closed:
fmt.Println("The server is closed!")
return
}
}
fmt.Println("Break!")
}
无限阻塞。如何让它发挥作用?
最佳答案
如果 channel 说没有更多项目,您可以返回:
case v, more := <-ch:
if !more {
return
}
fmt.Printf("v is %v\n", v)
关于go - 如果任何 channel 关闭,有没有办法中断选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47199365/