dsgdhtr_43654 2018-10-06 19:27 采纳率: 100%
浏览 570
已采纳

如何在Go模板中访问数组的第一个索引的值

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条回答 默认 最新

  • dongque5529 2018-10-06 19:35
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况