Go 转到在模板中呈现URL行查询字符串-不同的行为

Go 转到在模板中呈现URL行查询字符串-不同的行为,go,go-templates,Go,Go Templates,我是新来的,我的脑子里一直想着一些琐碎的事情,所以我请求你的帮助,也许有人知道为什么会发生这种行为: 我想在模板中输出url对象的查询参数字符串,但显然由于变量前面有“?”字符,所以(整个)输出是url编码的。问号在围棋模板中有特殊意义吗 输出不是param1=value1&value2=param2,而是param1%3dvalue1%26value2%3dparm2 在围棋场中,html/template包的围棋文档解释了行为(): 此包使用的安全模型假定模板作者受信任,而Execute的数

我是新来的,我的脑子里一直想着一些琐碎的事情,所以我请求你的帮助,也许有人知道为什么会发生这种行为:

我想在模板中输出url对象的查询参数字符串,但显然由于变量前面有“?”字符,所以(整个)输出是url编码的。问号在围棋模板中有特殊意义吗

输出不是param1=value1&value2=param2,而是param1%3dvalue1%26value2%3dparm2


在围棋场中,
html/template
包的围棋文档解释了行为():

此包使用的安全模型假定模板作者受信任,而Execute的数据参数不受信任。下文提供了更多细节


关于这一点,您真的应该三思而后行,为什么您不想将这种安全行为应用于模板


然后,如果您确实确定不想转义字符串,请使用
template.URL
intead of a string:

我找到了这个,我认为这就是原因,但是我如何指示go在默认情况下不应用“| urlquery”过滤器?“这方面的问题是,您真的应该三思而后行,为什么不想将这种安全行为应用到模板上。”因为在我的例子中,RawQuery as URL struct文档说明,已经进行了编码,因此它是安全的……然后您可以在程序中简单地使用文本/模板,而不是html/模板,请参阅