ParseGlob:在目录中递归解析所有模板的模式是什么?

时间:2014-09-09 13:19:03

标签: go go-templates

Template.ParseGlob("*.html") //fetches all html files from current directory.
Template.ParseGlob("**/*.html") //Seems to only fetch at one level depth

我不是在寻找“Walk”解决方案。只是想知道这是否可行。我不太明白这种期望的“模式”。如果我能得到关于ParseGlob使用的模式的解释,那也很棒。

2 个答案:

答案 0 :(得分:6)

code text/template/helper.go提及

 // The pattern is processed by filepath.Glob and must match at least one file.

filepath.Glob()说"模式的语法与Match"

相同
  

如果name与shell文件名模式匹配,则Match返回true。

implementation of Match()似乎没有对待**'不同的是,只考虑' *'匹配任何非分隔符字符序列 这意味着' **'相当于' *',这反过来将解释为什么匹配仅在一个级别深度工作。

答案 1 :(得分:0)

因此,由于ParseGlob无法递归加载模板,因此我们必须使用path/filepath.Walk函数。但是这种方式提供了更多机会。

https://gist.github.com/logrusorgru/abd846adb521a6fb39c7405f32fec0cf