将多个数据传递给 Go 模板
Go 中的模板执行允许传递单个值,但该值可以是复合类型包含多个组件。这提供了用于传递和访问模板中各种数据对象的多个选项。
使用结构的复合值:
创建封装所需数据的自定义结构数据类型:
type Data struct { Results []User Other []int }
分配数据并执行template:
data := &Data{results, []int{1, 2, 3}} if err := GetTemplate("list").Execute(w, data); err != nil { // Handle error }
在模板中,以 {{.Results}} 形式访问 MongoDB 结果,以 {{.Other}} 形式访问整数数组。
使用复合值地图:
或者,创建一个包含data:
m := map[string]interface{}{ "Results": results, "Other": []int{1, 2, 3}, }
将地图传递到模板并使用点表示法访问数据:{{.Results}} 表示结果,{{.Other}} 表示整数数组。
使用切片的复合值:
一种可读性较差的方法是使用包含data:
s := []interface{}{ results, []int{1, 2, 3}, }
索引模板数据以访问组件:{{index . 0}} 获取结果和 {{index . 1}} 用于整数数组。
附加说明:
请记住,必须导出数据类型才能在模板中访问。
考虑使用结构体或映射来提高可读性和可维护性。
存在其他方法,但不太实用具体场景。
以上是如何将多个数据对象传递给 Go 模板?的详细内容。更多信息请关注PHP中文网其他相关文章!