在模板上迭代 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
.
执行它
我有以下代码,想遍历模板中的主题,但对于我来说,我似乎无法忘记它是一个嵌套容器这一事实。
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
.