2012-04-08 8 views
12

En mi caso en particular, me gustaría saber cómo se aplicaría el siguiente código Java en Ir -¿Cuál es el equivalente de Java ArrayList <E> en Golang?

class Channel { 
    public String name; 
    public Channel(){} 
} 

ArrayList<Channel> channels = new ArrayList<Channel>(); 

he hecho más que empezar, y creo que esto sería la estructura apropiada para el Canal en Ir -

type Channel struct { 
    Name string 
} 

sólo hay que saber cómo funcionaría en ArrayList Ir

Respuesta

30

Usar una rebanada:

var channels []Channel // an empty list 
channels = append(channels, Channel{name:"some channel name"}) 

Además, su declaración de canal es ligeramente fuera, necesita la palabra clave 'tipo':

type Channel struct { 
    name string 
} 

Aquí está un ejemplo completo: http://play.golang.org/p/HnQ30wOftb

Para obtener más información, consulte la slices article.

También está el recorrido go (tour.golang.org) y la especificación del idioma (golang.org/ref/spec, vea #Slice_types, #Slices, y #Appending_and_copying_slices).

+0

Gracias, lo que es lo contrario de la función append (por ejemplo, para eliminar un elemento)? – liamzebedee

+4

'a = append (a [: i], a [i + 1:] ...)' – Mostafa

+1

si todo lo que quiere hacer es eliminar uno del frente o del final, entonces es aún más fácil: a = a [1 :] o a = a [: len (a) - 2] Mostafa le permite eliminar uno del centro del sector. La mejor parte es que, en estos casos, agregar no tendrá que cambiar el tamaño del sector, por lo que solo se trata de una modificación in situ. –

0

Esto funciona

//make the object Channel 
type Channel struct { 
    name string 
} 

// a empty list 
var channels = []*Channel {} 

//and finally add this object 
channels = append(channels, Channel{name:"juan carlos anez mejias"}) 
Cuestiones relacionadas