2012-10-05 72 views
2

我想编码去编程语言的维基。 我已将/data文件夹中的数据和.html文件中的数据放入/tmpl文件夹中。为什么filepath.Walk()恐慌?

我已经编写了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。任何人都可以请指导我?

+0

什么是您的TEMPLATE_PATH,并且它与您放置edit.html的位置有关?你是否跟随别人的代码? – minikomi

+0

var TEMPLATE_PATH:=“tmpl /”。 – sreeprasad

+0

在您的tmpl文件夹中是否有edit.html文件? – minikomi

回答

1

documentation of filepath.Walk你可以阅读:

FUNC城(根弦,walkFn WalkFunc)错误

漫步走在根根的文件树,呼吁walkFn在 每个文件或目录树,包括根。访问文件和目录时出现的所有错误都由 walkFn过滤。这些文件按照词汇顺序排列,这使得输出成为确定性的,但是 意味着对于非常大的目录,Walk可能效率低下。

因此Walk需要一个目录作为第一个参数。你在那里放置一个文件,这使得整个事情引发恐慌。

我不确定你想要做什么,但是如果你想打开那个文件,使用os.Openos.Stat如果你想测试是否存在。

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