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

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

有沒有更好的方法可以檢查模板屬性是否未解析?

有沒有更好的方法可以檢查模板屬性是否未解析?

Go
幕布斯7119047 2022-12-19 21:16:35
我正在嘗試使用構建一個字符串text/template,其中模板字符串可以具有通過映射解析的任意屬性。我想要完成的是確定一個/任何模板屬性未解析的位置并返回錯誤。目前,我正在使用,regexp但正在接觸社區(qū),看看是否有更好的解決方案。package mainimport (    "bytes"    "fmt"    "regexp"    "text/template")func main() {    data := "teststring/{{.someData}}/{{.notExist}}/{{.another}}"    // the issue here is that data can be arbitrary so i cannot do    // a lot of unknown if statements    t := template.Must(template.New("").Parse(data))    var b bytes.Buffer    fillers := map[string]interface{}{        "someData": "123",        "another":  true,        // in this case, notExist is not defined, so the template will        // note resolve it    }    if err := t.Execute(&b, fillers); err != nil {        panic(err)    }    fmt.Println(b.String())    // teststring/123/<no value>/true    // here i am trying to catch if a the template required a value that was not provided    hasResolved := regexp.MustCompile(`<no value>`)    fmt.Println(hasResolved.MatchString(b.String()))    // add notExist to the fillers map    fillers["notExist"] = "testdata"    b.Reset()    if err := t.Execute(&b, fillers); err != nil {        panic(err)    }    fmt.Println(b.String())    fmt.Println(hasResolved.MatchString(b.String()))    // Output:    // teststring/123/<no value>/true    // true    // teststring/123/testdata/true    // false}
查看完整描述

1 回答

?
一只斗牛犬

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

您可以通過設置模板上的選項讓它失敗:


func (t *Template) Option(opt ...string) *Template

"missingkey=default" or "missingkey=invalid"

    The default behavior: Do nothing and continue execution.

    If printed, the result of the index operation is the string

    "<no value>".

"missingkey=zero"

    The operation returns the zero value for the map type's element.

"missingkey=error"

    Execution stops immediately with an error.

如果你將它設置為missingkey=error,你會得到你想要的。


t = t.Options("missingkey=error")


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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