Получение данных из вложенной структуры

type User struct {
Id        primitive.ObjectID `bson:"_id"`
Firstname string             `bson:"firsname"`
Lastname  string             `bson:"lastname"`
Nickname  string             `bson:"nickname"`
Login     string             `bson:"login"`
Password  string             `bson:"password"`
News      []News_item        `bson:"news"`
}
type News_item struct {
Heading string `bson:" heading"`
Text    string `bson:" text"`
Src_img string `bson:" src"`
}


exemple := &User{
    Firstname: "Иван",
    Lastname:  "Иванов",
    Nickname:  "godmodeon",
    Login:     "qwerty",
    Password:  "123",
    News: []News_item{
        {
            Heading: "Макороны",
            Text:    "Не солить",
            Src_img: "upload-759203908.png"},
        {
            Heading: "Макороны",
            Text:    "Не солить",
            Src_img: "upload-759203908.png"}}}

Как из такой структуры получить например Text? Пробывал exemple.News.Text но получил ошибку


Ответы (2 шт):

Автор решения: Oleksiy Chechel

В данном случае, для получения каждого элемента массива, его нужно перебрать:

for _, v := range exemple.News {
    fmt.Println(v.Text)
}

Или же получить нужный элемент по индексу. В таком случае нужно убедиться, что длинна массива News не нулевая

if len(exemple.News) > 0 {
    fmt.Println(exemple.News[0].Text)
}

https://play.golang.org/p/Nv9pNLF8cCw

→ Ссылка
Автор решения: keepcalmist

Ты обращаешься к слайсу exemple.News без индекса. Если хочешь выбрать все поля Text, то пройдись по всему слайсу и клади поле Text в отдельную переменную.

→ Ссылка