gpt4 book ai didi

go - 如果任何 channel 关闭,有没有办法中断选择?

转载 作者:IT王子 更新时间:2023-10-29 01:35:06 25 4
gpt4 key购买 nike

假设我们在两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com