运行时错误:带有模板的马提尼中的无效内存地址或无指针取消引用

时间:2014-09-15 23:44:50

标签: go martini

这是我的代码:

m.Get("/", func(r render.Render) string {
    t := template.New("some template")
    toto := "titi"
    templateh := "<html>Hello world! {{ toto }} <form name='input' action='../first' method='post' ><input type='texte' name='toto'><input type='submit' value='Submit'></form></html>"
    t, _ = t.Parse(templateh)
    var doc bytes.Buffer
    err := t.Execute(&doc, toto)
    if err != nil {
        fmt.Println("There was an error:", err)
    }
    s := doc.String()
    fmt.Println(s)

    return s

})

并且它返回一个运行时错误:无效的内存地址或无指针取消引用

我不明白为什么......

1 个答案:

答案 0 :(得分:4)

电话

    t, _ = t.Parse(templateh)

返回nil并输出错误,指出函数&#34; todo&#34;没有定义。模板Execute方法取消引用nil指针,导致恐慌。

你应该改变两件事:

  • 检查并处理解析调用中的错误返回。这是使用template.Must辅助函数的好地方。
  • {{ todo }}替换为{{.}}
  • 来修复模板