我之前在我的主包中声明了全局变量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) }....} 在另一个包中,我在一个函数中编写: tmpl.ExecuteTemplate(w, "venue-index.html", res)但我得到一个错误tmpl:未定义我意识到还有其他类似的问题,但答案并没有解决我的问题。我究竟做错了什么?
2 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
tmpl
从另一个包中看不到。要从其他包中导入变量,您必须通过完全限定名称引用它们,并让变量以大写字母开头,pack.Tmpl
等等。
也不可能将变量从导入main
到其他包中。
萧十郎
TA贡献1815条经验 获得超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 关注
- 104 浏览
添加回答
举报
0/150
提交
取消