2016-12-28 21 views
0

我正在关注构建wiki页面的golang.org教程(https://golang.org/doc/articles/wiki/#tmp_4),并且一切正常,直到我在步骤“使用net/http服务维基页面“。我在src/github.com/user/gowiki/test.txt中有一个text.txt文件,但loadPage(标题)似乎没有访问test.txt文件。任何帮助是极大的赞赏。谢谢!go loadPage问题:无效的内存地址或无指针解除引用

package main 

import (
    "fmt" 
    "io/ioutil" 
    "net/http" 
) 

type Page struct { 
    Title string 
    Body []byte 
} 

func (p *Page) save() error { 
    filename := p.Title + ".txt" 
    return ioutil.WriteFile(filename, p.Body, 0600) 
} 

func loadPage(title string) (*Page, error) { 
    filename := title + ".txt" 
    body, err := ioutil.ReadFile(filename) 
    if err != nil { 
     return nil, err 
    } 
    return &Page{Title: title, Body: body}, nil 
} 

func viewHandler(w http.ResponseWriter, r *http.Request) { 
    title := r.URL.Path[len("/view/"):] 
    p, _ := loadPage(title) 
    fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body) 
} 

func main() { 
    http.HandleFunc("/view/", viewHandler) 
    http.ListenAndServe(":8080", nil) 
} 

回答

0

您还没有核对loadPage()中的ViewHandler(返回的错误),所以如果loadPage()不能加载该文件,并返回一个错误为零,ViewHandler的()试图使用零获得页面标题和正文,这就是导致恐慌的原因。

它工作正常,但如果loadPage()可以读取文件。

+0

ahhh得到了它,我创建了一个if语句返回,如果有错误,并打印错误,现在看到“打开test.txt:没有这样的文件或目录”确认loadPage()找不到文件。我玩过保存文件的位置以及从哪里启动服务器,现在它已加载。谢谢! – jj1111

+0

@ jj1111不客气。如果您满意,您应该接受我的答案。 –

相关问题