Вопрос, вам нужна ссылка на структуру Session. Было бы лучше, если бы было написано:
type Session struct {
ID int64
Name string
SessionFatherID int64
}
Самое простое, что можно сделать, это прочитать это в карту с ключом Name
, а затем сделать второй проход, чтобы связать SessionFatherID
( aka parent ID).
Так как это похоже на домашнюю работу, я избегу "написать решение для вас". Ваша программа должна выглядеть следующим образом:
Шаг 1: Открыть входной файл
Шаг 2: Сканировать входной файл в карту сессий: sessions := map[string]*Session{}
entry := Session{ID: id, Name: name}
session[entry.Name] = &entry
Шаг 3. Перебор сеансов
- Анализ имени сеанса для определения его родителя
- Поиск на карте родительского элемента и его идентификатора
Установить запись, имеющая новый SessionFatherID
if parent, found := sessions[parentSessionName]; found {
value.SessionFatherID = parent.ID
}
Это работает, поскольку карта указателя на сессию, вы можете изменить значение
Шаг 4: Выведите ваш результат
Простой результат для вашего набора данных может выглядеть следующим образом:
&{1 SESSION01 0}
&{2 SESSION02.5 4}
&{3 SESSION01.5.5 0}
&{4 SESSION02 0}
&{0 SESSION01.5 1}