英文:
Golang can't ExecuteTemplate
问题
我需要执行ExecuteTemplate
(文本和HTML)。我有以下代码片段:
import "text/template"
...
test_path := "/cnaize/home/test.txt"
testTmpl := template.New(test_path)
var test bytes.Buffer
if err := testTmpl.ExecuteTemplate(&test, test_path, mm.Args); err != nil {
return err
}
但是在ExecuteTemplate
中我遇到了invalid memory address or nil pointer dereference
错误。当我将第一行改为import "html/template"
时,我遇到了"/cnaize/home/test.txt" is an incomplete template
错误。
我的test.txt
文件内容如下:
Test
可能出了什么问题?
编辑:
我知道有关文档的内容,但我在https://github.com/arkxu/gomail/blob/master/message.go中找到了这个解决方案,这正是我所需要的,因为我不知道如何在template.ParseFiles()
中设置args
。使用文件夹名称的template.New()
是可以的。而我的mm.Args
是map[message:Hello there!]
,我已经检查过了。
英文:
I need to ExecuteTemplate
(text and html). I have next snippet:
import ("text/template")
...
test_path := "/cnaize/home/test.txt"
testTmpl := template.New(test_path)
var test bytes.Buffer
if err := testTmpl.ExecuteTemplate(&test, test_path, mm.Args); err != nil {
return err
}
but I have error invalid memory address or nil pointer dereference
in ExecuteTemplate
. When I change first line to import ("html/template")
, I have "/cnaize/home/test.txt" is an incomplete template
error.
My test.txt
:
Test
Where may be a problem?
EDITED:
I know about documentation, but I found this solution in https://github.com/arkxu/gomail/blob/master/message.go and it's exactly what I need, because I don't know how to set args
in template.ParseFiles()
. template.New()
with folder name is ok. And my mm.Args
is map[message:Hello there!]
, I've checked it.
答案1
得分: 3
这里有两个问题:
-
template.New()
用给定的名称初始化一个空模板,你给了一个路径,这是可以的,但可能不是你想要的。在使用库之前,请先阅读文档。
你可能要使用的是:template.ParseFiles() -
mm.Args
是什么?仅从代码片段和错误信息来看,我猜测mm
是空的(nil)。
英文:
There are two things wrong here:
-
template.New()
initializes an empty template with the given name, you are giving a path, which is ok, but it probably is not what you want. Please read the documentation before using libraries naively.
You are probably looking for: template.ParseFiles() -
what is
mm.Args
? From that snippet alone and the error I would guessmm
is nil.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论