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