go - 运行时错误 : invalid memory address or nil pointer dereference in martini with template

标签 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

})

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

我不明白为什么...

最佳答案

电话

    t, _ = t.Parse(templateh)

返回 nil 和错误,指出函数“todo”未定义。模板 Execute 方法取消引用 nil 指针,导致 panic 。

你应该改变两件事:

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

关于go - 运行时错误 : invalid memory address or nil pointer dereference in martini with template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858592/

相关文章:

去大文件下载并传递给客户端(代理)

go - 马提尼酒中处理程序的所谓顺序是什么?

data-binding - 将结构传递给 Post martini 例程

c# - F#'s async state machines the same as C#' 是 async 还是 go-lang 的 go 命令?

go - 如何使用 Go Golang 对文件进行签名

使用 GoConvey 测试 REST API

Go Martini 处理 HTML 表单数据

frameworks - 用 Martini 显示 HTML、CSS 和 Javascript

go - func (e *errorString) FormatError(p Printer) (下一个错误)

go - 我应该如何在 golang 中编码用于 Google Voice 识别的音频流?