@wajel

Как сделать структуру с структурой в мапе?

Доброго времени суток!
Изучаю го и придумал задачку, но для ее реализации не выходит сделать то, что указано в вопросе.
Есть данные
{
  "Name": {
    "nameField": "blabla",
    "field1": {
      "pole": {
        "someName": "qqqq",
        "someName2": {
          "test": {
            "testName": "test",
            "hhhh": "bla"
          },
          ...
          {}
        }
      },
      ...
      {}
    }
  }
}


type SomeStruct struct {
	nameField string
	field1       map[string]NextStruct
}

type NextStruct struct {
	someName string
	someName2 map[string]LastStruct
}

type LastStruct struct {
	testName string
	hhhh          int
}


Поля в мапы будут добавлять по мере работы программы динамически. С проверкой есть ли такой ключ или нет, если нет -> создавать.

Идея была в том, чтобы сначала создать Data := new(SomeStruct)
Затем Data.nameField= "text"
А вот дальше уже сложности.. Пробовал разное из гугла. Вероятнее всего дальше нужно проинициализировать первую мапу.

Data.field1= make(map[string]NextStruct)

И на этом момент я уже встрял..
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@DmitrySolomennikov
Используйте указатели:
type LastStruct struct {
	testName string
	hhhh     int
}

type NextStruct struct {
	someName  string
	someName2 map[string]*LastStruct
}

type SomeStruct struct {
	nameField string
	field1    map[string]*NextStruct
}

...

	data := new(SomeStruct)
	data.field1 = make(map[string]*NextStruct)

	data.field1["foo"] = new(NextStruct)

Полный код: https://go.dev/play/p/wji-sz2xoT3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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