我在golang中有一个模板,其中有一个看起来像这样的字符串:
<some_html> {{ .SomeOtherHTML }} </some_html>
我期望输出是这样的:
<some_html> <the_other_html/> </some_html>
但是我看到的是这样的:
<some_html> <the_other_html/< </some_html>
我还尝试插入一些JSON,但golang会转义字符并"在不应该出现的地方添加类似内容。
"
如何在golang中插入HTML模板而不发生这种情况?
您应该将变量作为a template.HTML而不是作为a 传递string:
template.HTML
string
tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`)) tplVars := map[string]interface{} { "Html": template.HTML("<p>Paragraph</p>"), "String": "<p>Paragraph</p>", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars) //OUTPUT: <p>Paragraph</p><p>Paragraph</p>
https://play.golang.org/p/QKKpQJ7gIs
如您所见,以a传递的变量template.HTML不会被转义,而是以a传递的变量是转义的string。