sti*_*ihl 2 templates dictionary go web
我是 Go 的初学者,正在自学一些网络开发人员。我正在尝试遍历模板文件中的地图,但找不到有关如何执行此操作的任何文档。这是我传入的结构:
type indexPageStruct struct {
BlogPosts []post
ArchiveList map[string]int
}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法在 BlogPosts 上循环:
{{range .BlogPosts}}
<article>
<h2><a href="/">{{.Title}}</a></h2>
...
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何做这样的事情:
{{range .ArchiveList}}
<article>
<h2><a href="/">{{.Key}} {{.Value}}</a></h2>
....
Run Code Online (Sandbox Code Playgroud)
您可以在模板中对地图进行“范围”,就像您可以在 Go 中对地图值进行“范围循环”一样。您还可以在迭代期间将映射键和值分配给临时变量。
引用自包文档text/template:
如果“范围”操作初始化了一个变量,则该变量将设置为迭代的连续元素。此外,“范围”可以声明两个变量,用逗号分隔:
Run Code Online (Sandbox Code Playgroud)range $index, $element := pipeline在这种情况下, $index 和 $element 分别设置为数组/切片索引或映射键和元素的连续值。
中的所有内容text/template也适用于html/template.
请参阅此工作示例:
templ := `{{range $k, $v := .ArchiveList}}Key: {{$k}}, Value: {{$v}}
{{end}}`
t := template.Must(template.New("").Parse(templ))
p := indexPageStruct{
ArchiveList: map[string]int{"one": 1, "two": 2},
}
if err := t.Execute(os.Stdout, p); err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上试试):
Key: one, Value: 1
Key: two, Value: 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7012 次 |
| 最近记录: |