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

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

Susan Sarandon
Susan Sarandon原创
2024-12-19 21:22:10668浏览

How Can I Pass Multiple Data Objects to Go Templates?

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

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