2012-04-08 3 views
12

W moim konkretnym przypadku zastosowania, chciałbym wiedzieć, jak poniższy kod Java będą realizowane w Go -Jaki jest odpowiednik Java ArrayList <E> w Golang?

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

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

stałam się zaczęło, i myślę, że to byłby odpowiedni dla struct Kanału Przejdź -

type Channel struct { 
    Name string 
} 

Muszę tylko wiedzieć, jak będzie działać w ArrayList idź

Odpowiedz

30

Użyj kawałek:

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

Również Twój deklaracji kanału jest nieco off, trzeba ten 'typ' Słowo kluczowe:

type Channel struct { 
    name string 
} 

Oto pełna Przykład: http://play.golang.org/p/HnQ30wOftb

Aby uzyskać więcej informacji, zobacz slices article.

Istnieje również wycieczka (tour.golang.org) i specyfikacja językowa (golang.org/ref/spec, zobacz #Slice_types, #Slices i #Appending_and_copying_slices).

+0

Dzięki, co jest przeciwieństwem funkcji append (na przykład w celu usunięcia elementu)? – liamzebedee

+4

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

+1

jeśli wszystko, co chcesz zrobić, to usunąć jeden z przodu lub końca, to jest jeszcze łatwiejsze: a = a [1 :] lub a = a [: len (a) - 2] Mostafa pozwala ci usunąć jeden ze środka plastra. Najlepsze jest to, że w tych przypadkach dodatek nie musi nawet zmieniać rozmiaru wycinka, więc jest to tylko modyfikacja na miejscu. –

0

To działa

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