代碼中使用了類似的方式來向模板填充參數:
c.HTML(200, "list.html", gin.H{"data":builder.String()})
模板中的語法大致如下:
<html>
<h1>{{ .data }}</h1>
</html>
發現我輸入的內容都做了HTML轉義。
如何不轉義呢?解決方法很簡單:
import ("html/template")
c.HTML(200, "list.html", gin.H{"data":template.HTML(builder.String())})
同時也學會了一個技巧:
當參數是interface{}類型的時候,如何不增加額外的類型描述的參數來帶入更多信息?
只需要重新定義一個類型,然后做強制類型轉換就行
type HTML string
func foo(param interface{}){
switch param.(type){
case string:
// html encode
case HTML:
// direct output
}
}
foo(HTML("1234"))