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

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

Patricia Arquette
发布: 2024-12-29 06:35:09
原创
455 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板