如何检查golang模板是否具有数据变量中的所有可用变量?
我试图从Golangs模板渲染一个字符串,并用映射填充模板变量 我需要检查一下地图上是否有所有的变量 预期下面的代码会引发错误如何检查golang模板是否具有数据变量中的所有可用变量?,go,Go,我试图从Golangs模板渲染一个字符串,并用映射填充模板变量 我需要检查一下地图上是否有所有的变量 预期下面的代码会引发错误 templateVariables := map[string]string {} tmpl := template.New("test") tmpl, err := tmpl.Parse("Hello {{.Name}}\n") if err != nil { log.Fatal("Parse: &q
templateVariables := map[string]string {}
tmpl := template.New("test")
tmpl, err := tmpl.Parse("Hello {{.Name}}\n")
if err != nil {
log.Fatal("Parse: ", err)
return
}
buf := bytes.NewBufferString("")
err1 := tmpl.Execute(buf,s)
if err1 != nil {
// Expected this to be true
log.Panic(err1)
}
fmt.print(buf.String())
执行上述操作不会引发错误,fmt.print中的buf
值为:
Hello
如果不抛出错误,如何确保映射中所有必需的变量都可用?有没有办法从模板包本身做到这一点
如果不抛出错误,如何确保映射中所有必需的变量都可用
“missingkey=error”应该满足您的要求:
missingkey:如果使用映射中不存在的键对映射进行索引,则控制执行期间的行为
“missingkey=错误”
执行会立即停止并出现错误
templateVariables := map[string]string {}
tmpl := template.New("test")
tmpl, err := tmpl.Parse("Hello {{.Name}}\n")
if err != nil {
log.Fatal("Parse: ", err)
return
}
buf := bytes.NewBufferString("")
err1 := tmpl.Execute(buf,s)
if err1 != nil {
// Expected this to be true
log.Panic(err1)
}
fmt.print(buf.String())
在您的示例中,可以按如下方式添加此选项:
tmpl:=template.New(“test”).Option(“missingkey=error”)
试试看