小编HFX*_*HFX的帖子

如果任何通道关闭,有没有办法中断选择?

假设我们选择两个通道。运行几次后,其中一个通道关闭。我怎样才能摆脱选择?

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!")
}
Run Code Online (Sandbox Code Playgroud)

就被无限封锁了。如何让它发挥作用?

go

2
推荐指数
1
解决办法
7218
查看次数

标签 统计

go ×1