首页 >后端开发 >Golang >在 Go 模板中,如何将数据从父模板传递到子模板?

在 Go 模板中,如何将数据从父模板传递到子模板?

DDD
DDD原创
2024-10-26 03:08:27247浏览

How can you pass data from a parent template to a child template in Go templates?

在模板之间传递数据

您的查询涉及将数据从一个模板传递到另一个模板。您有一个包含子模板 (image_row.html) 的父模板 (index.html),但希望将其他数据传递给子模板。

模板的默认行为仅允许父模板中定义的数据才能传递给孩子。但是,您可以通过采用一些技术来实现您的目标:

对多个参数使用函数

一种方法是定义一个函数,将您的参数聚合为一个函数切片值。然后,您可以注册此函数并在模板中调用它。

例如:

import "text/template"

func args(vs ...interface{}) []interface{} { return vs }

t, err := template.New("t").Funcs(template.FuncMap{"args": args}).Parse(...)

在index.html中:

{{ template "image_row" args . 5 }}

在image_row.html中:

{{ define "image_row" }}
   Data: {{ index . 0 }} {{ index . 1 }}
{{ end }}

这允许您使用索引函数访问子模板中的参数:

{{ index . 0 }} -> .
{{ index . 1 }} -> 5

其他方法

或者,您可以考虑:

  • 使用自定义模板函数:在父模板中定义自定义函数,为子模板生成必要的数据。
  • 传递结构体或映射:构造一个结构体或映射来聚合数据并将其传递给子模板。

以这种方式自定义数据传递机制可以让您灵活地控制数据如何在模板之间共享。

以上是在 Go 模板中,如何将数据从父模板传递到子模板?的详细内容。更多信息请关注PHP中文网其他相关文章!

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