我正在嘗試使用構建一個字符串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}
有沒有更好的方法可以檢查模板屬性是否未解析?
幕布斯7119047
2022-12-19 21:16:35