2014-07-15 95 views
-1

我需要ExecuteTemplate(text和html)。我有下一個片段:Golang無法執行模板

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 
} 

,但我有錯誤invalid memory address or nil pointer dereferenceExecuteTemplate。當我將第一行更改爲import ("html/template")時,我有"/cnaize/home/test.txt" is an incomplete template錯誤。 我test.txt

Test 

哪裏可能有問題?

編輯: 我知道文檔,但我發現這個解決方案在https://github.com/arkxu/gomail/blob/master/message.go,它正是我所需要的,因爲我不知道如何設置argstemplate.ParseFiles()。帶有文件夾名稱的template.New()是可以的。而我的mm.Argsmap[message:Hello there!],我查過了。

回答

3

有兩件事情錯在這裏:

  1. template.New()初始化給定名字空的模板,你給的路徑,這是確定的,但它可能不是你想要的。在天真地使用圖書館之前,請閱讀documentation。 您可能正在查找:template.ParseFiles()

  2. 什麼是mm.Args?從單獨的片段和錯誤,我猜mm是零。

+0

Wh不是我所需要的,我編輯了我的帖子 – cnaize

+0

這不是你所需要的。這就是爲什麼你收到不完整的模板錯誤。當你使用template.New(「whatever」)時,你的模板是空的。請閱讀文檔。似乎你仍然對模板包的工作方式感到困惑。你在執行模板時傳遞參數,它與'template.ParseFiles()'無關。 – seong