首页 > 后端开发 > Golang > 如何从 Go 模板中提取操作列表?

如何从 Go 模板中提取操作列表?

Mary-Kate Olsen
发布: 2024-12-17 04:16:25
原创
953 人浏览过

How to Extract a List of Actions from a Go Template?

如何在 Go 中访问模板“操作”

模板提供了一种将数据呈现为结构化文本的强大方法。在某些情况下,可能需要内省模板以确定它定义的操作列表。

模板结构

解析的模板表示为一棵树节点。每个节点代表模板中的特定构造,例如文本、操作或控制结构。

识别操作

操作是定义如何检索数据的节点或加工过的。它们可用于访问数据模型中的字段或调用函数。要识别树中的操作节点,请检查 parse.NodeAction 类型的节点。

示例实现

这是一个示例函数,它递归地遍历模板树并收集所有操作节点:

func ListTemplateActions(t *template.Template) []string {
    return listNodeActions(t.Tree.Root, nil)
}

func listNodeActions(node parse.Node, res []string) []string {
    if node.Type() == parse.NodeAction {
        res = append(res, node.String())
    }

    if ln, ok := node.(*parse.ListNode); ok {
        for _, n := range ln.Nodes {
            res = listNodeActions(n, res)
        }
    }

    return res
}
登录后复制

此函数返回包含每个操作的文本表示的字符串切片node.

用法

要使用此函数,请解析模板,然后调用 ListTemplateActions。例如:

t := template.Must(template.New("test").
    Parse(`<p>{{ .name }} - {{ .age }}</p>`))
fmt.Println(ListTemplateActions(t))
登录后复制

输出:

[{{.name}} {{.age}}]
登录后复制

此演示展示了如何识别和检索已解析模板中定义的操作列表,允许您确定它期望的输入和相应地动态构建数据模型。

以上是如何从 Go 模板中提取操作列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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