如何检查golang模板是否具有数据变量中的所有可用变量?

如何检查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

我试图从Golangs模板渲染一个字符串,并用映射填充模板变量

我需要检查一下地图上是否有所有的变量

预期下面的代码会引发错误

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”)
试试看