在模板上迭代 golang 中的嵌套结构

Iterating nested structs in golang on a template

我有以下代码,想遍历模板中的主题,但对于我来说,我似乎无法忘记它是一个嵌套容器这一事实。

type ThemeList struct {
    XMLName xml.Name `xml:"Themes"`
    Themes []Theme `xml:"Theme"`
}

type Theme struct {
    XMLName xml.Name `xml:"Theme"`
    Name string `xml:"Name,attr"`
    Page string `xml:"Page,attr"`
    Tag string `xml:"Tag,attr"`
    Day string `xml:"Day,attr"`
}

// Fetch the current XML document and return the Themelist[]
func openXML(filename string) ThemeList {

    xmlFile, _ := os.Open(filename)
    defer xmlFile.Close()
    XMLdata, _ := ioutil.ReadAll(xmlFile)

    var t ThemeList
    xml.Unmarshal(XMLdata, &t)

    return t
}

如何将这些输出到 {{range}} 中,其中每个主题都是单个列表项的一部分?输出将在模板中使用 .Name .Tag 等,因为我会查看它们。

使用以下模板:

<ul>{{range .Themes}}
  <li>{{.Name}} {{.Tag}}{{end}}
</ul>

并使用数据参数作为 *ThemeList.

执行它

Playground Example