gpt4 book ai didi

go - 定义自定义HTML字符串化的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-03 10:10:30 25 4
gpt4 key购买 nike

有没有一种方法可以定义当我只在Go html模板中输出值时,就可以完成格式化而不是打印字符串表示而不必调用函数来显式转换它了?
例如,假设我有一个Person类型,并且我有一个仅包含{{.}}的模板,我希望它自动创建到该人页面的链接,但是如果我使用相同的模板并传递了不同类型的值,则其他HTML将会是产生。
我不想做的是不得不编写{{.HTML}}{{. | html}}之类的东西。我已经意识到这是可能的,但是我的问题是关于如何避免这些问题的。
我一直在考虑Person.String()在不逃脱的情况下以某种方式返回HTML代码,但除了无法正常工作之外,这似乎也是一个丑陋的解决方案。
我考虑过的另一种解决方案是将所有内容作为HTML传递到模板中,但是后来我无法再访问属性(例如{{.name}}以仅输出名称),并且还必须将所有内容转换为HTML以防万一。在模板中使用。

最佳答案

创建一个返回template.HTML类型的方法。 IE。:

func (p *Person) HTML() template.HTML {
return fmt.Sprintf(`<a href="/person/%v">%s</a>`, p.id, template.HTMLEscapeString(p.name))
}
然后在您的模板中:
{{ .HTML }}

关于go - 定义自定义HTML字符串化的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65920132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com