How to access value of first index of array in Go templates

你离开我真会死。 提交于 2020-02-21 10:35:27

问题


So I have and html template when using this I get the object:

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

Output:

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

I just want to use the Name field I have tried many iterations without success:

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

What is the correct syntax for just getting .Name field (.Doc.Users[0].Name) of the first element in my array?


回答1:


Simply group the expression and apply the .Name selector:

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

Here's a runnable, verifiable example:

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))

Output (try it on the Go Playground):

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

(The <nil> at the end is the error value returned by template.Execute(), telling there were no errors executing the template.)



来源:https://stackoverflow.com/questions/52682621/how-to-access-value-of-first-index-of-array-in-go-templates

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!