如何在 Go 模板中访问数组的第一个索引的值 [英] How to access value of first index of array in Go templates

查看:73
本文介绍了如何在 Go 模板中访问数组的第一个索引的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我在使用它时有和 html 模板我得到了对象:

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

输出:

Foobar {MyName my@email.com}

我只想使用 Name 字段我已经尝试了很多次迭代都没有成功:

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

仅获取数组中第一个元素的 .Name 字段 (.Doc.Users[0].Name) 的正确语法是什么?

解决方案

只需将表达式分组并应用 .Name 选择器:

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

这是一个可运行、可验证的示例:

type User struct {名称字符串电子邮件字符串}t := template.Must(template.New("").Parse(`<div>Foobar {{ (index .Doc.Users 0).Name }}</div>`))m := 地图[字符串]接口{}{文档":地图[字符串]接口{}{用户":[]用户{{姓名:鲍勃",电子邮件:bob@myco.com"},{姓名:爱丽丝",电子邮件:alice@myco.com"},},},}fmt.Println(t.Execute(os.Stdout, m))

输出(在 Go Playground 上试试):

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

(最后的 template.Execute() 返回的错误值,表示执行模板没有错误.)

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?

解决方案

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

这篇关于如何在 Go 模板中访问数组的第一个索引的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆