为什么filepath.Walk()会发生恐慌?

时间:2012-10-05 01:03:51

标签: go

我正在尝试使用编程语言对wiki进行编码。 我已将/data文件夹和.html文件中的数据放在/tmpl文件夹中。

我编写了main函数,如下所示

func main() {
    walk := func(path string, info os.FileInfo, err error) error {
        if err == nil && !info.IsDir() && filepath.Ext(path) == ".html" {
            http.HandleFunc("/view/", makeHandler(viewHandler))
            http.HandleFunc("/edit/", makeHandler(editHandler))
            http.HandleFunc("/save/", makeHandler(saveHandler))
        }
        return err
    }
    root := TEMPLATE_PATH + "edit.html"
    err := filepath.Walk(root, walk)
    if err != nil {
        return
    }
}

我得到了panic edit.html not found。有人可以指导我吗?

1 个答案:

答案 0 :(得分:1)

documentation of filepath.Walk您可以阅读:

  

func Walk(root string,walkFn WalkFunc)错误

     

步行浏览以root为根的文件树,为每个文件或目录调用walkFn   树,包括根。访问文件和目录时出现的所有错误都会被过滤掉   walkFn。这些文件以词法顺序走,这使得输出确定性但是   意味着对于非常大的目录,Walk可能效率低下。

所以Walk期望一个目录作为第一个参数。你正在那里放一个文件 使整个事情陷入恐慌。

我不确定您要尝试做什么,但如果您要打开该文件,请使用os.Openos.Stat,如果您要测试是否存在。

使用go进行编码时的一般提示:使用gofmt命令根据style guidelines格式化代码。

相关问题