栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从另一个模板中获取go模板的值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从另一个模板中获取go模板的值

没有内置支持将模板结果存储在模板变量中,仅用于包含结果。

但是,您可以使用所需的任何复杂功能注册自定义功能。您可以注册一个

GetOutput
函数,该函数将执行由其名称标识的模板,并且可以将结果返回为
string
,可以将其存储在模板变量中。

这样做的例子:

func main() {    t := template.New("")    t = template.Must(t.Funcs(template.FuncMap{        "GetOutput": func(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err        },    }).Parse(src))    if err := t.ExecuteTemplate(os.Stdout, "T2", nil); err != nil {        panic(err)    }}const src = `{{define "T1"}}{{ printf "%s-%s" "complex" "stuff" }}{{end}}{{define "T2"}}    {{ $t1Out := (GetOutput "T1")}}    {{ printf "%s-%s" "even-more" $t1Out }}{{end}}`

输出将是(在Go Playground上尝试):

    even-more-complex-stuff

"T1"
模板简单地输出
"complex-stuff"
,和
"T2"
模板得到的输出
"T1"
,并连接静态文本
"even-more-"
和结果
"T1"

已注册的

GetOutput
函数获取要执行的模板的名称,将其输出定向到本地缓冲区以执行该模板,然后返回缓冲区的内容(以及其执行的可选错误)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号