Golang是否有一种“ safeTemplateVariable”功能?

时间:2018-11-13 22:02:17

标签: go

最好用一个例子来问这个问题:

首先,让我们在Golang中声明一个变量:

{{ $html := "<b>hi!</b>" }}

如果我们尝试输出{{ $html }},则输出为:

输入:
{{ $html }}
输出:
<b>hi!</b>

如果您通过safeHTML函数,则html将会求值,输出将是:

输入:
{{ $html | safeHTML }}
输出:
hi!

是否可以解析Golang变量?像这样:
如果我这样尝试:
{{ $var1 := "it's me!" }}
{{ $var2 := "hey guys, {{ $var1 }}" }}

这将发生:
输入:
{{ $var2 }}
输出:
"hey guys, {{ $var 1 }}"

但是我希望像这样对$var1值进行评估:
"hey guys, it's me!"

对不起,如果我不太清楚,我不是说英语的人

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

你可以

 {{ $var2 := (printf "hey guys, %v" $var1) }}

https://play.golang.org/p/D_OOE7LqOrw

答案 1 :(得分:0)

“安全”是Go中HTML模板的默认模式。

如果您的变量带有特殊的HTML字符,则会在输出时对它们进行转义,使其完全安全。但是,这与剥离HTML标签不同,您的示例似乎这样做了。如果要剥离HTML标签,而不是转义HTML字符,则需要编写自己的函数。

如果要禁用安全行为并输出原始HTML,请使用template.HTML类型。