2010-05-23 41 views
16

Xin lỗi cho câu hỏi cú pháp mới làm quen.cách phân bổ mảng kênh trong đi

Làm cách nào để tạo một mảng kênh?

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

Tức là, thay thế năm dòng trên trong một mảng kênh có kích thước 5?

Rất cám ơn.

Trả lời

38

Tuyên bố var chans [5]chan int sẽ phân bổ một mảng có kích thước 5, nhưng tất cả các kênh sẽ là nil.

Một cách sẽ được sử dụng một lát đen:

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

Nếu bạn không muốn lặp lại chính mình, bạn sẽ phải lặp trên nó và khởi tạo mỗi phần tử:

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

Tại sao là giải pháp của bạn tốt hơn Chickencha gọn gàng và thành ngữ 'chans: = make ([] chan int, 5)'? – peterSO

+12

Nếu các kênh không được phân bổ rõ ràng với 'make (chan int)', chúng sẽ mặc định là 'nil'. –

Các vấn đề liên quan