@ajlhimik

Как добавить данные в массив структур go?

type struct1 struct {
	NameList []struct2
}
type struct2 struct {
	ID int
	FuncList []struct3
}
type struct3 struct {
	Date []string
	Power int
	Intelect int
}

pers = struct1{}

незная за ранее длину получаемых массивов данных, как например добавить в pers:
pers.NameList[0].ID = 1
pers.NameList[1].ID = 2

вот так как выше не могу по тому что длина массива len(pers.NameList[0]) = 0 функцией "append()" тоже не могу по тому что...
.\main.go:107:9: cannot use form["name_lucru"] (type []string) as type profList2 in append
.\main.go:107:9: append(prForm.Proflist, form["name_lucru"]) evaluated but not used

(Proflist это NameList, а form["name_lucru"] это будет у нас 1 или 2 - поле ID, в моем случее form["name_lucru"] тоже массив)

на всякий случай исходная структура
type profList struct {
	Proflist []profList2 `json:"Proflist"`
}

type profList2 struct {
	NameProf string      `json:"NameProf"`
	OrarProf int16       `json:"OrarProf"`
	PersList []profList3 `json:"PersList"`
}

type profList3 struct {
	NameLucr    string `json:"NameLucr"`
	PrenumeLucr string `json:"PrenumeLucr"`
	Begconc1    string `json:"Begconc1"`
	Endconc1    string `json:"Endconc1"`
	Begconc2    string `json:"Begconc2"`
	Endconc2    string `json:"Endconc2"`
}

я понимаю что там несоответствие типов, но можно как-то увеличить размер массива pers.NameList с значениями nill у всех и потом присваивать все что нужно
  • Вопрос задан
  • 1853 просмотра
Решения вопроса 1
Идея понятна?
https://play.golang.org/p/Qg9pe1K7X9I

spoiler
package main

import "fmt"

type struct1 struct {
	NameList []struct2
}
type struct2 struct {
	ID int
	FuncList []struct3
}
type struct3 struct {
	Date []string
	Power int
	Intelect int
}

func main(){
	Struct3 := struct3{}
	Struct3.Date = append(Struct3.Date, "date1", "date2") 
	Struct3.Date = append(Struct3.Date, "date3") 
	
	Struct2 := struct2{}
	Struct2.FuncList = append(Struct2.FuncList, Struct3)
	
	Struct1 := struct1{}
	Struct1.NameList = append(Struct1.NameList, Struct2)
	
	fmt.Printf("%+v", Struct1)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы