尝试执行此代码时出现一些内存错误:package webimport ( "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我不明白我做错了什么......
2 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
template.ParseFiles返回错误
func ParseFiles(filenames ...string) (*Template, error)
如果发生错误,则解析停止并返回*Templatenil。
如果出现问题,您应该检查错误。
这可以解释为什么 ' t' 可能为零。
一般来说,最好的做法是永远不要忽略错误。
这里:
var t *Template
if t, err := template.ParseFiles("web.html"); err != nil {
// do something
// return err
// or
// panic(err)
}
慕仙森
TA贡献1827条经验 获得超8个赞
另一种解决方案是使用template.Must
函数在出现错误时引起恐慌。在这种情况下,它的使用是合理的,因为程序需要它的资源。
t := template.Must(template.ParseFiles("web.html"))
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消