如何创建频道数组?
例如:用一个通道数组替换以下五行,大小为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);
答案 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)
仅在缓冲区已满时才发送到缓冲的通道块。缓冲区为空时接收阻塞。
答案 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)
}
你可以这样创建,使用切片和通道