Получите доступ к полю c в структуре, которая находится в шаблонах слайса Golang - PullRequest
1 голос
/ 28 марта 2020

У меня есть такой, куда я отправляю данные шаблона лет (который является частью структуры). Как я могу получить доступ к полю шаблона AcaYear только 2-го элемента (структура)? Весь второй предмет, к которому я могу получить доступ как {{index . 1 }}. Я также могу варьироваться по срезу и получать AcaYear поля обоих элементов. Но нужно только AcaYear поле второго элемента (результат должен быть 2021-2022).

package main

import (
    "log"
    "os"
    "text/template"
)

type course struct {
    Number string
    Name   string
    Units  string
}

type semester struct {
    Term    string
    Courses []course
}

type year struct {
    AcaYear string
    Fall    semester
    Spring  semester
    Summer  semester
}

var tpl *template.Template

func init() {
    tpl = template.Must(template.ParseFiles("tpl.gohtml"))
}

func main() {
    years := []year{
        year{
            AcaYear: "2020-2021",
            Fall: semester{
                Term: "Fall",
                Courses: []course{
                    course{"CSCI-40", "Introduction to Programming in Go", "4"},
                    course{"CSCI-130", "Introduction to Web Programming with Go", "4"},
                    course{"CSCI-140", "Mobile Apps Using Go", "4"},
                },
            },
            Spring: semester{
                Term: "Spring",
                Courses: []course{
                    course{"CSCI-50", "Advanced Go", "5"},
                    course{"CSCI-190", "Advanced Web Programming with Go", "5"},
                    course{"CSCI-191", "Advanced Mobile Apps With Go", "5"},
                },
            },
        },
        year{
            AcaYear: "2021-2022",
            Fall: semester{
                Term: "Fall",
                Courses: []course{
                    course{"CSCI-40", "Introduction to Programming in Go", "4"},
                    course{"CSCI-130", "Introduction to Web Programming with Go", "4"},
                    course{"CSCI-140", "Mobile Apps Using Go", "4"},
                },
            },
            Spring: semester{
                Term: "Spring",
                Courses: []course{
                    course{"CSCI-50", "Advanced Go", "5"},
                    course{"CSCI-190", "Advanced Web Programming with Go", "5"},
                    course{"CSCI-191", "Advanced Mobile Apps With Go", "5"},
                },
            },
        },
    }

    err := tpl.Execute(os.Stdout, years)
    if err != nil {
        log.Fatalln(err)
    }
}

1 Ответ

0 голосов
/ 28 марта 2020

Просто сгруппируйте вызов index и примените селектор поля .AcaYear к результату:

{{ (index . 1).AcaYear }}

Это выдаст (попробуйте на Go Playground ) :

2021-2022
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...