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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么當(dāng)我忽略 template.New() 程序可以成功運(yùn)行?

為什么當(dāng)我忽略 template.New() 程序可以成功運(yùn)行?

Go
慕碼人8056858 2023-02-21 17:02:35
我正在嘗試用于html/template解析結(jié)構(gòu)格式的 JSON。func handler(w http.ResponseWriter, r *http.Request) {    var issueList = template.Must(template.New("template01").ParseFiles("template01.tmpl"))    result, err := SearchIssues(os.Args[1:])    if err != nil {        log.Fatal(err)    }    if err := issueList.Execute(w, result); err != nil {        log.Fatal(err)    }}該函數(shù)SearchIssues用于將流轉(zhuǎn)換為JSON格式,效果很好。html/template然后我嘗試使用解析 JSONvar issueList = template.Must(template.New("template01").ParseFiles("template01.tmpl"))當(dāng)我訪問(wèn)本地服務(wù)時(shí),出現(xiàn)錯(cuò)誤:XXX is an incomplete or empty template。但是當(dāng)我刪除New("template01").程序運(yùn)行良好。像這樣:func handler(w http.ResponseWriter, r *http.Request) {    var issueList = template.Must(template.ParseFiles("template01.tmpl"))    result, err := SearchIssues(os.Args[1:])    if err != nil {        log.Fatal(err)    }    if err := issueList.Execute(w, result); err != nil {        log.Fatal(err)    }}我不是母語(yǔ)人士,英語(yǔ)不是很好,抱歉。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的第一個(gè)代碼的問(wèn)題在于,當(dāng)您執(zhí)行以下操作時(shí):

var issueList = template.Must(template.New("template01").
    ParseFiles("template01.tmpl"))

template.New()將創(chuàng)建一個(gè)名為 的新模板"template01"。該變量issueList將引用此空模板。您調(diào)用它的方法,該方法將解析文件并創(chuàng)建一個(gè)名為. 該變量仍將引用模板,而不是從文件中解析的模板。當(dāng)您調(diào)用 時(shí),它會(huì)執(zhí)行(默認(rèn))指定的模板,即空的. 這就是你得到錯(cuò)誤的原因。Template.ParseFiles() "template01.tmpl""template01.tmpl"issueListtemplate01Template.Excute()issueListtemplate01incomplete or empty template

在你的第二個(gè)版本中:

var issueList = template.Must(template.ParseFiles("template01.tmpl"))

您調(diào)用函數(shù),它解析文件并返回其模板。所以將從文件中引用已解析的模板,而不是空模板。所以會(huì)執(zhí)行這個(gè)模板。template.ParseFiles() "template01.tmpl"issueListTemplate.Execute()

注意:如果在第一種情況下您使用Template.ExecuteTemplate(),您可以命名要執(zhí)行的模板:

if err := issueList.Execute(w, "template01.tmpl", result); err != nil {
    log.Fatal(err)
}

這將成功,因?yàn)槟鞔_告訴執(zhí)行"template01.tmpl"從文件解析的,而不是默認(rèn)的空模板。

另請(qǐng)注意,您不應(yīng)該在處理程序中解析模板,它很慢。在此之前解析一次,將結(jié)果存儲(chǔ)在包級(jí)變量中,然后在處理程序中執(zhí)行它。具體細(xì)節(jié)參見(jiàn)It takes too much time when using "template" package to generate a dynamic web page to client in Golang

關(guān)聯(lián)模板詳見(jiàn)Go模板名稱(chēng)

也請(qǐng)使用encoding/json生成 JSON 輸出而不是text/templateor html/template。模板引擎對(duì)JSON格式和編碼一無(wú)所知,很容易生成無(wú)效的JSON。


查看完整回答
反對(duì) 回復(fù) 2023-02-21
  • 1 回答
  • 0 關(guān)注
  • 95 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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