douzhongpi9734 2019-05-22 12:52
浏览 12

在Go中的多个地方收听一个频道[重复]

This question already has an answer here:

I know if once get the data from a channel that data won't receive from any other place that channel is waiting. However, if I want to design a program broadcast that channel has got data and It is ready to take out in different places without affecting other channels but in all places, I need to receive data in the same order, what will be the best design?

As a example:

func sender(c chan int){
c-> 5
}

func reciever1(c chan int){
 i:= <-c
...
}

func reciever2(c chan int){
 i:= <-c
...
}

Here when executing both reciever1() and reciver2() Both should get same result.

</div>
  • 写回答

1条回答 默认 最新

  • douzhi3105 2019-05-22 13:03
    关注

    You have to create multiple channels and pass the same value to each of those channels. Example

    package main
    import (
        "fmt"
    )
    
    func main(){
        chann1 := make(chan int)
        chann2 := make(chan int)
        go func(){
            for {
                val :=<- chann1
                fmt.Println("GORoutine 1", val)
            }
    
        }()
        go func(){
            for {
                val :=<- chann2
                fmt.Println("GORoutine 2", val)
            }
    
        }()
    
        for i:=0;i<=10;i++{
            chann1 <- i
            chann2 <- i
        }
    
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line