2010-05-23 28 views
16

對不起,新手的語法問題。如何分配通道數組

如何創建一個通道陣列?

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); 

也就是說,在一個大小爲5的通道數組中替換上述五行?

非常感謝。

回答

38

語句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) 
} 
+0

爲什麼是你的解決方案比雞的簡潔和習慣'chans更好:= make([] chan int,5)'? – peterSO 2010-06-02 14:32:57

+12

如果通道沒有用'make(chan int)'顯式分配,它們將默認爲'nil'。 – 2010-06-02 14:59:58