2016-12-28 4 views
0

Ich folge dem Golang.org Tutorial zum Erstellen einer Wiki-Seite (https://golang.org/doc/articles/wiki/#tmp_4) und alles läuft gut, bis ich die obige Fehlermeldung während des Schrittes "Using net/http, um Wiki-Seiten zu bedienen ". Ich habe eine text.txt-Datei in src/github.com/user/gowiki/test.txt, aber loadPage (title) scheint nicht auf die Datei test.txt zuzugreifen. Jede Hilfe wird sehr geschätzt. Vielen Dank!go loadPage Problem: Ungültige Speicheradresse oder Null Zeiger Dereferenz

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) 
} 

Antwort

0

Du bist gerade nicht den Fehler zurückgegeben von loadPage() in Viewhandler() dann, wenn loadPage() kann die Datei nicht laden und gibt nil zurück, mit einem Fehler, Viewhandler() versucht, dass die Null zu verwenden zu erhalten der Seitentitel und der Körper und das ist es, was die Panik verursacht.

Es funktioniert gut, wenn loadPage() die Datei jedoch lesen kann.

+0

ahhh, ich habe eine if-Anweisung erstellt, die zurückgegeben wird, wenn ein Fehler auftritt, und den Fehler jetzt gedruckt, um "test.txt öffnen: keine solche Datei oder Verzeichnis" anzuzeigen, dass loadPage() die Datei nicht finden kann. Ich spielte mit, wo die Datei gespeichert wird und wo ich den Server starte, und es lädt jetzt. Vielen Dank! – jj1111

+0

@ jj1111 du bist willkommen. Sie sollten meine Antwort akzeptieren, wenn Sie damit zufrieden sind. –

Verwandte Themen