HTML 要素を含む Go テンプレートを定義する場合、HTML の一部としてレンダリングされるべき文字を意図せずエスケープしないようにすることが重要です。この問題は、文字列を使用してテンプレート内の HTML コンテンツを表すときに発生します。
エスケープを防ぐための正しい方法は、HTML コンテンツを template.HTML のインスタンスとして渡すことです。この型は、Go テンプレート内で HTML のレンダリングを処理し、エスケープせずに表示されるようにします。
この手法を示す例:
<code class="go">package main import ( "fmt" "html/template" "os" ) func main() { 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) }</code>
この例では、HTML コンテンツは template.HTML 値として渡され、エスケープが発生するのを防ぎます。出力は、エスケープされた HTML 文字なしで、意図したとおりに表示されます。
以上がエスケープせずに HTML を Go テンプレートに挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。