我知道,一旦从某个渠道获取数据,该渠道正在等待的其他任何地方都不会收到数据。但是,如果我要设计一个频道广播的节目,并且该频道可以在不影响其他频道的情况下在不同地方播放,但是在所有地方,我都需要以相同的顺序接收数据,那么最佳的设计是什么?
例如:
func sender(c chan int){
c-> 5
}
func reciever1(c chan int){
i:= <-c
...
}
func reciever2(c chan int){
i:= <-c
...
}
在同时执行reciever1()
和reciver2()
时都应得到相同的结果。
答案 0 :(得分:0)
您必须创建多个通道,并将相同的值传递给每个通道。 例子
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
}
}