为了账号安全,请及时绑定邮箱和手机立即绑定

从 GO 模板获取原始源代码

从 GO 模板获取原始源代码

Go
千万里不及你 2022-10-10 19:02:42
给定一个 go html 模板对象,我如何检索原始源定义?我在文档中看不到任何功能,但必须有办法做到这一点。
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

template.Template类型有一个Template.Tree导出字段,其中包含(模型)已解析的模板。

请注意,即使此字段已导出,也不会导出以供您使用,而是从文档中引用:

*parse.Tree 字段仅被导出以供 html/template 使用,并且应被所有其他客户端视为未导出。

撇开这一点不谈,有了解析树,就可以重建构建它的源代码。parse.Tree有一个Root具有方法的字段,该String()方法从树中构建源文本。

例如:

src := `Hi {{.Name}}. You are {{.Age}} years old.`

t := template.Must(template.New("").Parse(src))

fmt.Println(t.Tree.Root.String())

这将输出(在Go Playground上尝试):

Hi {{.Name}}. You are {{.Age}} years old.

如前所述:Template.Tree不是公共 API 的一部分。您可以使用它,但不能保证它会保持导出状态,并且在未来的版本中也能正常工作。您应该做的是保留您解析的源,而不是依赖Template.Tree.


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号