Задать вопрос
@Nube

Почему не получается записать данные из БД в поля вложенных структур?

Доброго времени суток! Есть структура IndexPage в которую вложена структура Post. Я пытаюсь заполнить ее данными из Бд, но получаю ошибку "runtime error: invalid memory address or nil pointer dereference", однако если попытаться заполнить структуру Post напрямую все проходит успешно.
Сразу в Post не могу записывать т.к. кроме этой структуры есть еще, которые надо вложить в одну - IndexPage
Собственно сам код. Сейчас IndexPage имеет только одну вложенную структуру .
var (
    index = make(map[int]*model.IndexPage)
)
func UpdateIndexPage() *(map[int]*model.IndexPage){

	result, err := db.Query(sqlTopPost2)
	if err != nil {
		log.Println(err)
	}
	posts := make([]*model.IndexPage, 0)

	//Run In Cycle
	for result.Next() {
		post := new(model.IndexPage)
		err := result.Scan(&post.Post.ID,&post.Post.Title,&post.Post.Description,&post.Post.Rating,&post.Post.Author,&post.Post.ImageLink)

		if err != nil{
			fmt.Println(err,"Gero")
			continue
		}

		posts = append(posts,post)

	}
	if err = result.Err(); err != nil {
		log.Println(err)

	}

	for _, post := range posts{
		index[post.Post.ID] = post
	}

	return &index

}

Ошибка вылетает на на строке result.Scan
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Nube Автор вопроса
Все дело было в структуре . Вместо
type Data strcut {
 Dt      *Img
}
type Img strcut {
 Link  string
}
использовать 
type Data strcut {
 Img
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
yellow79
@yellow79
Senior Software Engineer
А где вы создаёте переменную index, которую возвращает функция? И будет проще, если вы укажете строку, на которую указывает ошибка
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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