gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:28:23 26 4
gpt4 key购买 nike

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

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

}

my playground

最佳答案

对范围使用此语法:

  {{range $i, $pp := $people}}
{{$children := $pp.Children}}
Name: {{$pp.Name}}
Children:
{{range $j, $c := $children}}
Child {{$j}}: {{$c}}
{{end}}
{{end}}

此外,export结构字段,以便模板可以使用这些字段。在模板中使用这些导出的名称。

Run it in the playground

关于go - 如何对包含在模板中的结构 slice 内的 slice 进行范围排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com