为了账号安全,请及时绑定邮箱和手机立即绑定

其他包中未定义 html/template 类型的 Golang 全局变量

其他包中未定义 html/template 类型的 Golang 全局变量

Go
慕娘9325324 2023-06-05 17:08:49
我之前在我的主包中声明了全局变量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到其他包中。


查看完整回答
反对 回复 2023-06-05
?
萧十郎

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)

....


查看完整回答
反对 回复 2023-06-05
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信