关闭两者之间的通道

时间:2019-07-15 15:57:19

标签: go

我们要在接收数据的中间关闭通道。就像当我们刚刚收到Output作为10而不是所有值一样。

我们总是可以在goroutine中调用loop并将通道设置为nil,但随后我们需要在主线程中侦听,即使那样也无法完成。

有什么建议吗?

package main

import (
    "fmt"
    "time"
)

func addVal(ch chan int) {
    ch <- 10
    ch <- 20
    ch <- 30

}

func main() {   
    ch := make(chan int, 3)
    go addVal(ch)

    func () {for i := 0; i< 3; i++ {
        val, ok := <-ch
        if !ok {
            fmt.Println("not ok")
        } else {
            fmt.Println(val)
        }

        //ch = nil
    }}()
    time.Sleep(time.Second*1)
}

问题陈述 我们希望从多个来源接收数据,其中之一是主要来源。因此,如果我们从主要数据源接收数据,则可以关闭通道,否则,我们将继续从其他数据源接收数据。

0 个答案:

没有答案