2012-10-05 69 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格式化您的代碼。