第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

存儲在地圖中的 Html 模板在第一次調(diào)用時崩潰

存儲在地圖中的 Html 模板在第一次調(diào)用時崩潰

Go
牧羊人nacy 2023-07-10 10:47:29
我使用下面的函數(shù)在第一次調(diào)用模板時解析 Go 模板并將其保存到地圖中。隨后,從地圖加載模板進行優(yōu)化。// Resource ...type Resource struct {    Templates map[string]template.Template}func (res *Resource) FetchTemplate(templateName string) (template.Template, bool) {    tmpl, ok := res.Templates[templateName]    return tmpl, ok}func (res *Resource) ExecTemplate(w http.ResponseWriter, name, path string, model interface{}) error {    t, ok := res.FetchTemplate(name)    if !ok{        t := template.New(name)        t, err := t.ParseFiles(res.Assets + path)        t = template.Must(t, err)        if err != nil {            return err        }        res.Templates[name] = *t    }    if err := t.Execute(w, model); err != nil {        w.WriteHeader(http.StatusBadGateway)        return err    }    return nil}然而,第一次在模板上調(diào)用代碼時,它會在t.Execute調(diào)用時發(fā)生恐慌。隨后它總是有效。這是錯誤日志。  /usr/local/go/src/net/http/server.go:1746 +0xd0panic(0x15b3ac0, 0x1b1c8d0)        /usr/local/go/src/runtime/panic.go:513 +0x1b9html/template.(*Template).escape(0xc000127088, 0x0, 0x0)        /usr/local/go/src/html/template/template.go:95 +0x32html/template.(*Template).Execute(0xc000127088, 0x4a90200, 0xc000374680, 0x15ed6c0, 0xc000370a20, 0x0, 0x0)        /usr/local/go/src/html/template/template.go:119 +0x2fgit.imaxinacion.net/uoe/anssid/app/resource.(*Resource).ExecTemplate(0xc0002ee120, 0x4a901b0, 0xc000374680, 0x16577a3, 0x5, 0x1660b7a, 0x10, 0x15ed6c0, 0xc000370a20, 0x145de5e, ...)        /Users/gbemirojiboye/go/src/git.imaxinacion.net/uoe/anssid/app/resource/resource.go:110 +0x1ef這可能是什么原因造成的?當(dāng)我為每個調(diào)用創(chuàng)建新模板時,這種情況沒有發(fā)生。
查看完整描述

1 回答

?
12345678_0001

TA貢獻1802條經(jīng)驗 獲得超5個贊

問題是t由于變量陰影,它是未定義的:

t, ok := res.FetchTemplate(name)
if !ok{
    t := template.New(name) // <---- The problem is here
    t, err := t.ParseFiles(res.Assets + path)

在您的塊內(nèi),您正在使用if重新定義。這意味著你有一個新的、本地范圍的,一旦你離開該塊,你仍然擁有外部,它仍然是“nils”。tt := ...tift

將標(biāo)記行更改為:

    t = template.New(name)


查看完整回答
反對 回復(fù) 2023-07-10
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號