如何对包含在模板中的结构切片内的切片进行范围排列?

我试图遍历模板中的几个嵌套切片,但出现错误:


panic: template: abc:3: unexpected <range> in range


goroutine 1 [running]:

text/template.Must(...)

    /usr/local/go/src/text/template/helper.go:23

main.main()

    /tmp/sandbox748332064/main.go:38 +0x560

我试过搜索文档,但似乎无法找到能够执行代码的解决方法,尽管这看起来非常简单。


我的代码:


package main


import (

    "log"

    "os"

    "text/template"

)


type Person struct {

    name     string

    children []string

}


func main() {

    p := []*Person{

      {

        name:     "Susy",

        children: []string{"Bob", "Herman", "Sherman"},

      },

      {

        name:     "Norman",

        children: []string{"Rachel", "Ross", "Chandler"},

      },

    }


    str := `

      {{$people := .}}

      {{range $i, $pp := range $people}}

        {{$children := $pp.children}}

        Name: {{$pp.name}}

        Children:

          {{range $j, $c := $children}}

          Child {{$j}}: {{$c}}

          {{end}}                   

      {{end}}

    `


    t := template.Must(template.New("abc").Parse(str))

    err := t.Execute(os.Stdout, p)

    if err != nil {

      log.Println(err)

    }


}

我的游乐场


凤凰求蛊
浏览 121回答 1
1回答

MMMHUHU

将此语法用于范围:  {{range $i, $pp := $people}}    {{$children := $pp.Children}}    Name: {{$pp.Name}}    Children:      {{range $j, $c := $children}}      Child {{$j}}: {{$c}}      {{end}}                     {{end}}此外,导出结构字段,以便模板可以使用这些字段。在模板中使用那些导出的名称。在操场上运行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go