Как получить доступ к значению первого индекса массива в шаблонах Go - PullRequest
0 голосов
/ 06 октября 2018

Таким образом, у меня есть и шаблон HTML, при использовании этого я получаю объект:

<div>Foobar {{ index .Doc.Users 0}}</div>

Вывод:

<div>Foobar {MyName my@email.com}</div>

Я просто хочу использовать поле Name, которое я пыталсямного итераций без успеха:

{{ index .Doc.Users.Name 0}}
{{ index .Doc.Users 0 .Name}}
{{ .Name index .Quote.Clients 0}}
...

Какой правильный синтаксис для получения .Name поля (.Doc.Users[0].Name) первого элемента в моем массиве?

1 Ответ

0 голосов
/ 06 октября 2018

Просто сгруппируйте выражение и примените селектор .Name:

<div>Foobar {{ (index .Doc.Users 0).Name }}</div>

Вот пригодный для выполнения, проверяемый пример:

type User struct {
    Name  string
    Email string
}

t := template.Must(template.New("").Parse(
    `<div>Foobar {{ (index .Doc.Users 0).Name }}</div>`))

m := map[string]interface{}{
    "Doc": map[string]interface{}{
        "Users": []User{
            {Name: "Bob", Email: "bob@myco.com"},
            {Name: "Alice", Email: "alice@myco.com"},
        },
    },
}

fmt.Println(t.Execute(os.Stdout, m))

Вывод (попробуйте его на GoДетская площадка ):

<div>Foobar Bob</div><nil>

(<nil> в конце - это значение ошибки, возвращаемое template.Execute(), говорящее об отсутствии ошибок при выполнении шаблона.)

...