登录
首页 >  Golang >  Go问答

如何自定义 Go 模板操作的定义方法

来源:stackoverflow

时间:2024-02-15 14:54:21 146浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何自定义 Go 模板操作的定义方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

有没有办法使用文本或 html go 模板定义自定义“操作”(如范围、if、块等)。我想实现如下目标:

{{ component "blog_post" . }}
  {{ template "title" . }}
  {{ component "content" . }}
    My Content
  {{ end }}
{{ end }}

其中“组件”是我的自定义操作。

我已经使用自定义函数实现了上述功能,但它非常笨重且难以阅读。我对使用自定义操作的能力特别感兴趣,该操作同时采用普通参数(例如 .)以及任意“子项”(很像反应组件)。


正确答案


这在当前的 Go 模板实现中是不可能的。

动作由内部 text/template/parse 包处理,并且全部在 https://golang.org/src/text/template/parse/node.go 中定义。您会发现没有创建新动作的机制,因为 Tree.action 方法在 parse.go 中有一个硬编码的开关他们的情况。

这很遗憾,因为 text/template 包错过了很多可重用功能的机会。例如,有一个完整的内置 LISP 解析器,除非您通过模板解析器使用它,否则它无法使用。

今天关于《如何自定义 Go 模板操作的定义方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>