2012-04-08 13 views
12

In meinem speziellen Anwendungsfall, würde ich gerne wissen, wie der folgende Java-Code würde in Go implementiert werden -Was entspricht einer Java ArrayList <E> in Golang?

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

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

Ich habe angefangen, gotten, und ich denke, das ist die geeignete Struktur für Channel in Go wäre -

type Channel struct { 
    Name string 
} 

ich muss nur wissen, wie Arraylist in Go

Antwort

30

Verwenden einer Scheibe arbeiten würde:

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

Auch ist Ihre Channel-Erklärung leicht ab, können Sie den 'Typ' Stichwort benötigen:

type Channel struct { 
    name string 
} 

Hier ist ein komplettes Beispiel: http://play.golang.org/p/HnQ30wOftb

Für mehr Informationen, die slices article sehen.

Es gibt auch die go-Tour (tour.golang.org) und die Sprachspezifikation (golang.org/ref/spec, siehe #Slice_types, #Slices und #Appending_and_copying_slices).

+0

Danke, was ist das Gegenteil der Append-Funktion (zum Beispiel ein Element zu entfernen)? – liamzebedee

+4

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

+1

Wenn du nur einen von der Front oder dem Ende entfernen willst, dann ist es noch einfacher: a = a [1 :] oder a = a [: len (a) - 2] Mit Mostafa kannst du einen aus der Mitte der Scheibe entfernen. Der beste Teil ist, dass Append in diesen Fällen nicht einmal die Größe der Scheibe ändern muss, so dass es nur eine vor Ort Modifikation ist. –

0

Dies funktioniert

//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"}) 
Verwandte Themen