我有一系列使用通用map[string]string
值的模板。像
<h1> You sent in {{.Field1}} and {{.Field2}} </h1>
有效负载将为:{"Field1": "Value1", "Field2": "Value2"}
被称为:err := tmpl.Execute(w, data); // data is map[string]string and was decoded from the payload
我无法将data
转换为struct
,因为模板和有效负载是在运行时确定的。这些模板由业务用户创建,我不想为每个模板创建一个类型,并且每次有新模板时都要更改后端。因此,希望保持map[string]string
类似的解决方案。
上述设计的问题是,当模板中使用的字段未在运行时传入时。当我执行模板时,缺少的字段在模板中返回一个空字符串。如果发生这种情况,我想返回错误。
所以,我想知道在map-lookup失败时是否有办法让模板返回解析错误?或者有没有办法将带有运行时错误检查的通用struct
值传递给允许动态有效负载的模板?
谢谢!