gpt4 book ai didi

go - 定义顶级 go 模板

转载 作者:IT王子 更新时间:2023-10-29 01:43:22 24 4
gpt4 key购买 nike

假设我有两个文本文件(go 模板):

child.tmpl

TEXT1 
Hello {{ . }}

top.tmpl

TEXT2
{{ template "child.tmpl" "argument"}}

child.tmpl 模板嵌套在 top.tmpl

解析它们的典型程序是:

package main

import (
"os"
"text/template"
)

func main() {
t := template.Must(template.ParseFiles("child.tmpl", "top.tmpl")
t.ExecuteTemplate(os.Stdout, "top.tmpl", nil)
}

是否有任何方法可以使用 {{ 将模板作为参数嵌入到顶级模板中。 }} 符号 ?类似于 {{ template {{.}} "argument"}}

  • 更一般地说,定义布局模板的最佳方式是什么,以便我可以像使用顶级模板一样使用多个子模板?

最佳答案

有两种公认的方法可以解决您的问题:

第一个涉及编写您自己的模板包含函数并将其注册为 template.FuncMap使用您的模板通过 template.Funcs .

另一种方法是在您的 模板中使用{{define xxx}} block 。然后你可以有两个不同的文件来定义相同的模板:

  • file1.html: {{define body}}...{{end}}
  • file2.html: {{define body}}...{{end}}

根据您的需要解析正确的文件,并在您的父级模板中执行{{template body "argument"}}

在我看来,第一个选项更灵活。

关于go - 定义顶级 go 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com