所以我有和html模板使用时,我得到对象:
<div>Foobar {{ index .Doc.Users 0}}</div>
输出:
<div>Foobar {MyName my@email.com}</div>
我只想使用Name尝试了多次迭代但没有成功的领域:
Name
{{ index .Doc.Users.Name 0}} {{ index .Doc.Users 0 .Name}} {{ .Name index .Quote.Clients 0}} ...
仅获取数组中第一个元素的.Name字段(.Doc.Users[0].Name)的正确语法是什么?
.Name
.Doc.Users[0].Name
只需将表达式分组并应用.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 Playground上尝试):
<div>Foobar Bob</div><nil>
(<nil>最后的是的错误值template.Execute(),表示执行模板没有错误。)
<nil>
template.Execute()