您可以使用 function 创建一个新的空模板。然后,您可以使用该 方法 创建一个新的,空的, 关联的 模板。您可以使用方法将其解析为“
into” 。
template.New()
__
Template.New()
____
Template.Parse()
看起来像这样:
func parseTemplates(templs ...string) (t *template.Template, err error) { t = template.New("_all") for i, templ := range templs { if _, err = t.New(fmt.Sprint("_", i)).Parse(templ); err != nil { return } } return}测试它:
t, err := parseTemplates( `{{define "one"}}I'm #1.{{end}}`, `{{define "two"}}I'm #2, including #1: {{template "one" .}}{{end}}`,)if err != nil { panic(err)}if err = t.ExecuteTemplate(os.Stdout, "two", nil); err != nil { panic(err)}输出(在Go Playground上尝试):
I'm #2, including #1: I'm #1.
另请参阅相关问题:转到模板名称
注意
尽管我们可以
Template.Parse()在单个模板上多次调用该方法,并且可以正确解析多个
命名
模板,但是仍然建议
template.Template通过调用为每个模板获取一个新模板
Template.New()。因为如果模板文本的内容
超出 命名模板,则它们将被覆盖,并且仅保留最后一个。例如:
abc {{define "one"}}no1{{end}}。"abc"后续
Template.Parse()调用将丢失静态文本。
的文档中也对此进行了说明
Template.Parse():
(在使用同一接收者模板的多次Parse调用中,只有一个调用可以包含空格,注释和模板定义以外的其他文本。)



