首页 >后端开发 >Golang >如何将多个数据对象传递给 Go 模板?

如何将多个数据对象传递给 Go 模板?

Patricia Arquette
Patricia Arquette原创
2024-12-29 06:35:09476浏览

How Can I Pass Multiple Data Objects to a Go Template?

将多个数据传递到 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn