我之前在我的主包中聲明了全局變量func main(),但它仍然沒有在另一個包中聲明。package mainimport{? "html/template"? .....)var tmpl = template.New("master")func main() {? ? func init() {? ? ? ? _, err := tmpl.ParseGlob("templates/*.html")? ? ? ? if err != nil {? ? ? ? ? ? log.Fatalln("Error loading templates:", err)? ? ? ? }....}? ??在另一個包中,我在一個函數(shù)中編寫:? ? tmpl.ExecuteTemplate(w, "venue-index.html", res)但我得到一個錯誤tmpl:未定義我意識到還有其他類似的問題,但答案并沒有解決我的問題。我究竟做錯了什么?
2 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊
tmpl
從另一個包中看不到。要從其他包中導(dǎo)入變量,您必須通過完全限定名稱引用它們,并讓變量以大寫字母開頭,pack.Tmpl
等等。
也不可能將變量從導(dǎo)入main
到其他包中。

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊
這是我用于在幫助程序包中聲明模板的解決方案:
package helpers
import (
"html/template"
"log"
)
// Tmpl global template var
var Tmpl = template.New("master")
func init() {
_, err := Tmpl.ParseGlob("templates/*.html")
if err != nil {
log.Fatalln("Error loading templates:", err)
}
}
然后在我的控制器包中:
package controllers
import (
"myapp/helpers"
)
someFunc() {
....
helpers.Tmpl.ExecuteTemplate(w, "header.html", nil)
....
}
- 2 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消