猿问

内存错误,Go 中的 html/模板

尝试执行此代码时出现一些内存错误:


package web


import (

    "net/http"

    "html/template"

)


type Hello struct {

    Level string

}


func Main(w http.ResponseWriter, r *http.Request) {


    h := Hello{Level: "gsdfg"}


    t, _ := template.ParseFiles("web.html")

    t.Execute(w, h)

}

我在浏览器中得到的错误信息是这样的:


the runtime process gave a bad HTTP response: ''


2015/03/26 11:34:56 http: panic serving 127.0.0.1:43269: runtime error: invalid memory address or nil pointer dereference

我不明白我做错了什么......


慕的地8271018
浏览 188回答 2
2回答

跃然一笑

template.ParseFiles返回错误func ParseFiles(filenames ...string) (*Template, error)如果发生错误,则解析停止并返回*Templatenil。如果出现问题,您应该检查错误。这可以解释为什么 ' t' 可能为零。一般来说,最好的做法是永远不要忽略错误。这里:var t *Templateif t, err := template.ParseFiles("web.html"); err != nil {    // do something    // return err    // or    // panic(err)}

慕仙森

另一种解决方案是使用template.Must函数在出现错误时引起恐慌。在这种情况下,它的使用是合理的,因为程序需要它的资源。t := template.Must(template.ParseFiles("web.html"))
随时随地看视频慕课网APP

相关分类

Go
我要回答