So I have and html template when using this I get the object:
<div>Foobar {{ index .Doc.Users 0}}</div>
Output:
<div>Foobar {MyName [email protected]}</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?
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: "[email protected]"},
{Name: "Alice", Email: "[email protected]"},
},
},
}
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.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With