从 GO 模板获取原始源代码

给定一个 go html 模板对象,我如何检索原始源定义?

我在文档中看不到任何功能,但必须有办法做到这一点。


千万里不及你
浏览 133回答 1
1回答

慕哥6287543

该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.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go