2015-11-24 26 views

Odpowiedz

4

Objects nie zawiera elementów. Najpierw musisz ustawić element append. Tak:

r.Objects = append(r.Objects, struct{ id int }{}) 

Ponadto można pominąć r.Objects[0].id = 10; użyciu inicjalizacji swojej struktury tak:

r.Objects = append(r.Objects, struct{ id int }{ 10 }) 
+0

Dzięki Ronindev. Typ wyniku struct { string name Przedmioty [] struct {int id string name email ciąg } } Jak dodać wartości do tego? – vanarajcs

+0

RobinDev, Jak dodać wiele zmiennych w załączniku? – vanarajcs

+0

@vanarajcs coś podobnego do tego 'r.Objects = append (r.Objects, struct {id int} {10}, struct {id int} {20})' – RoninDev

10

Po pierwsze, chciałbym powiedzieć, że jest bardziej idiomatyczne określić typ dla struktury, niezależnie od tego, w jaki sposób prosta jest struktura. Na przykład:

type MyStruct struct { 
    MyField int 
} 

Oznaczałoby to zmieniając Result struct się następująco:

type Result struct { 
    name string 
    Objects []MyStruct 
} 

Powodem swoimi paniki program to dlatego, że próbujesz uzyskać dostęp do obszaru pamięci (pozycja w Twoja tablica Object s), która nie została jeszcze przydzielona.

Dla tablic struktur należy to zrobić pod numerem make.

r.Objects = make([]MyStruct, 0) 

Następnie, aby dodać do swojej tablicy bezpiecznie, jesteś lepiej instancji indywidualny MyStruct, tj

ms := MyStruct{ 
    MyField: 10, 
} 

A potem append ing to na swojej tablicy r.Objects

r.Objects = append(r.Objects, ms) 

Aby uzyskać więcej informacji na temat , zobacz the docs

+0

Dzięki Matt Schofield ... – vanarajcs

+0

Cześć Matt Schofield, Twoja odpowiedź jest rozwiązany mój problem. Przyjąłem już twoją odpowiedź. – vanarajcs

+0

długość należy podać w make, prawda?'make ([] MyStruct, 0)' –

Powiązane problemy