2010-05-23 13 views
16

Lo siento por la pregunta de sintaxis de principiante.cómo asignar una matriz de canales en go

¿Cómo se crea una matriz de canales?

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

Es decir, la sustitución de las cinco líneas superiores en una serie de canales de tamaño 5?

Muchas gracias.

Respuesta

38

La instrucción var chans [5]chan int asignaría una matriz de tamaño 5, pero todos los canales serían nil.

Una forma sería utilizar una rebanada literal:

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

Si no desea repetir a sí mismo, que tendría que recorrer sobre ella e inicializar cada elemento:

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

Por qué ¿Es mejor tu solución que el conciso e idiomático 'chans: = make ([] chan int, 5)' de Chickencha? – peterSO

+12

Si los canales no están asignados explícitamente con 'make (chan int)', estarán predeterminados a 'nil'. –

Cuestiones relacionadas