对于解析文件,我为 template.ParseFiles 设置了一个变量,我目前必须手动设置每个文件。
两件事情:
我如何能够遍历一个主文件夹和多个子文件夹并自动将它们添加到 ParseFiles,这样我就不必单独手动添加每个文件?
我如何能够在子文件夹中调用具有相同名称的文件,因为目前如果我在 ParseFiles 中添加同名文件,我会在运行时出错。
var templates = template.Must(template.ParseFiles(
"index.html", // main file
"subfolder/index.html" // subfolder with same filename errors on runtime
"includes/header.html", "includes/footer.html",
))
func main() {
// Walk and ParseFiles
filepath.Walk("files", func(path string, info os.FileInfo, err error) {
if !info.IsDir() {
// Add path to ParseFiles
}
return
})
http.HandleFunc("/", home)
http.ListenAndServe(":8080", nil)
}
func home(w http.ResponseWriter, r *http.Request) {
render(w, "index.html")
}
func render(w http.ResponseWriter, tmpl string) {
err := templates.ExecuteTemplate(w, tmpl, nil)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}