当我调用Go模板函数以输出HTML时,它将显示ZgotmplZ。
ZgotmplZ
样例代码:
http://play.golang.org/p/tfuJa_pFkm
package main import ( "html/template" "os" ) func main() { funcMap := template.FuncMap{ "printSelected": func(s string) string { if s == "test" { return `selected="selected"` } return "" }, "safe": func(s string) template.HTML { return template.HTML(s) }, } template.Must(template.New("Template").Funcs(funcMap).Parse(` <option {{ printSelected "test" }} {{ printSelected "test" | safe }} >test</option> `)).Execute(os.Stdout, nil) }
输出:
<option ZgotmplZ ZgotmplZ >test</option>
“ ZgotmplZ”是一个特殊值,指示运行时不安全内容到达CSS或URL上下文。该示例的输出将是:
<img src="#ZgotmplZ">
您可以向模板funcMap添加安全和attr函数:
包主
import ( "html/template" "os" ) func main() { funcMap := template.FuncMap{ "attr":func(s string) template.HTMLAttr{ return template.HTMLAttr(s) }, "safe": func(s string) template.HTML { return template.HTML(s) }, } template.Must(template.New("Template").Funcs(funcMap).Parse(` <option {{ .attr |attr }} >test</option> {{.html|safe}} `)).Execute(os.Stdout, map[string]string{"attr":`selected="selected"`,"html":`<option selected="selected">option</option>`}) }
输出将如下所示:
<option selected="selected" >test</option> <option selected="selected">option</option>
您可能需要定义一些其他函数,这些函数可以将字符串转换为template.CSS,template.JS,template.JSStr,template.URL等。