如何分配一个通道数组

时间:2010-05-23 18:56:39

标签: arrays go channel

如何创建频道数组

例如:用一个通道数组替换以下五行,大小为5:

var c0 chan int = make(chan int);
var c1 chan int = make(chan int);
var c2 chan int = make(chan int);
var c3 chan int = make(chan int);
var c4 chan int = make(chan int);

3 个答案:

答案 0 :(得分:49)

语句var chans [5]chan int将分配一个大小为5的数组,但所有通道都是nil

一种方法是使用切片文字:

var chans = []chan int {
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
}

如果你不想重复自己,你必须迭代它并初始化每个元素:

var chans [5]chan int
for i := range chans {
   chans[i] = make(chan int)
}

答案 1 :(得分:0)

我认为在这种情况下你可以使用缓冲通道。

频道可以缓冲。提供缓冲区长度作为初始化缓冲通道的第二个参数:

for i in marketnames:
    r = requests.get('https://bittrex.com/api/v1.1/public/getticker?market={names}'.format(names=i)).json()
    pd = pandas.Dataframe(r)
    print(pd)

仅在缓冲区已满时才发送到缓冲的通道块。缓冲区为空时接收阻塞。

https://tour.golang.org/concurrency/3

答案 2 :(得分:0)

c := make(map[int]chan int)
for i := 1; i <= 5; i++ {
    c[i] = make(chan int)
}
for _,v := range c {
    fmt.Println(v)
}

你可以这样创建,使用切片和通道