将多个数据传递到 Go 模板
在 Go 中,填充模板时,您可以传递单个值,该值可以是复合值,例如结构体、映射或切片。
将多个数据对象传递给模板:
使用结构:
创建一个将所需数据对象嵌入为导出字段的结构:
type Data struct { Results []User // MongoDB query result Other []int // Integer array }
将结构传递给模板执行:
data := &Data{results, []int{1, 2, 3}} if err := GetTemplate("list").Execute(w, data); err != nil { // Handle error }
中模板:
{{range .Results}} User name: {{.Name}} {{end}} {{range .Other}} {{.}} {{end}}
使用映射:
使用数据对象作为键值对创建映射:
m := map[string]interface{}{ "Results": results, "Other": []int{1, 2, 3}, }
传递到模板执行的映射:
if err := GetTemplate("list").Execute(w, m); err != nil { // Handle error }
中模板:
{{range .Results}} User name: {{.Name}} {{end}} {{range .Other}} {{.}} {{end}}
使用切片:
虽然可读性较差,但您也可以传递接口切片{}:
s := []interface{}{ results, []int{1, 2, 3}, }
将切片传递给模板执行:
if err := GetTemplate("list").Execute(w, s); err != nil { // Handle error }
中template:
{{range index . 0}} User name: {{.Name}} {{end}} Other: {{index . 1}}
注意:自定义函数或通道也可以用于传递多个数据对象,但被认为是不太常规的做法。
以上是如何将多个数据对象传递给 Go 模板?的详细内容。更多信息请关注PHP中文网其他相关文章!