Как изменить диапазон фрагмента, который содержится внутри фрагмента структур в шаблоне? - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь выделить несколько вложенных фрагментов внутри шаблона, но получаю сообщение об ошибке:

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

}

моя игровая площадка

1 Ответ

4 голосов
/ 13 марта 2019

Используйте этот синтаксис для диапазона:

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

Также, export поля структуры, чтобы поля могли использоваться шаблоном.Используйте эти экспортированные имена в шаблоне.

Запустите его на детской площадке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...