[英]iterate Map / Dictionary in golang template
我是Go的初學者,正在自學一些Web開發。 我正在嘗試在模板文件中遍歷地圖,並且找不到有關如何執行操作的任何文檔。 這是我傳入的結構:
type indexPageStruct struct {
BlogPosts []post
ArchiveList map[string]int
}
我可以使用以下方法遍歷BlogPosts:
{{range .BlogPosts}}
<article>
<h2><a href="/">{{.Title}}</a></h2>
...
但是我似乎無法弄清楚如何做這樣的事情:
{{range .ArchiveList}}
<article>
<h2><a href="/">{{.Key}} {{.Value}}</a></h2>
....
您可以在模板中的地圖上“范圍”,就像可以在Go中的地圖值上“范圍循環”一樣。 您還可以在迭代過程中將映射鍵和值分配給一個臨時變量。
從text/template
包doc引用:
如果“范圍”操作初始化變量,則將變量設置為迭代的連續元素。 此外,“范圍”可以聲明兩個變量,以逗號分隔:
range $index, $element := pipeline
在這種情況下,$ index和$ element分別設置為數組/切片索引或映射鍵和元素的連續值。
text/template
所有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)
}
輸出(在Go Playground上嘗試):
Key: one, Value: 1
Key: two, Value: 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.