小编YUT*_*LAI的帖子

单个`select`情况下的链接通道操作

我尝试复用2个通道A和B. A发送延迟10毫秒,B发送1秒.我使用select等待A和B,并将结果发送到扇入通道,然后在main中接收值.

package main

import  (
"fmt"
"time"
)

func talk(msg string, wait_time int) <-chan string {
    ch := make(chan string)
    go func () {
        for i:=0;i<5;i++ {
            ch <- fmt.Sprintf("%s %d", msg, i)
            time.Sleep(time.Duration(wait_time)*time.Millisecond)
        }
    }()

    return ch
}

func fanIn(input1, input2 <-chan string) <-chan string {
    ch := make(chan string)
    go func () {
        for {
            select {
                case t :=<-input1:
                    ch <- t
                case t := <-input2:
                    ch <- t
            }
        }
    }()

    return ch
}
func …
Run Code Online (Sandbox Code Playgroud)

go

3
推荐指数
1
解决办法
293
查看次数

标签 统计

go ×1