go - 本地图查找失败时从模板返回解析错误

标签 go

我有一系列模板,其中使用通用 map[string]string 值。类似的东西

 <h1> You sent in {{.Field1}} and {{.Field2}} </h1> 

有效负载将为:{"Field1": "Value1", "Field2": "Value2"}

调用为:err := tmpl.Execute(w, data);//数据是map[string]string并从有效负载中解码

我无法将data转换为struct,因为模板和有效负载是在运行时确定的。这些模板是由业务用户创建的,我不想为每个模板创建一个类型并在每次有新模板时更改后端。因此希望保留类似于map[string]string的解决方案。

上述设计的问题在于,当模板中使用的字段未在运行时传入时。当我执行模板时,缺失的字段在模板中返回一个空字符串。如果发生这种情况,我想返回一个错误。

所以,我想知道是否有办法让模板在 map 查找失败时返回解析错误?或者有没有办法将带有运行时错误检查的通用 struct 值传递给允许动态负载的模板?

谢谢!

最佳答案

使用"missingkey=error"选项。

tmpl := template.Must(template.New("").Option("missingkey=error").Parse(
      `<h1> You sent in {{.Field1}} and {{.Field2}} </h1>`))

playground example

关于go - 本地图查找失败时从模板返回解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36339219/

相关文章:

go error % 不允许

linux - 键盘输入解析算法的引用资料?

go - 如何以编程方式确定 pod 是否处于 crashloopbackoff 状态

go - 如何使用反射包操作结构中的映射字段?

memory - 如何在 golang 中以字节为单位获取结构的大小及其内容?

go - 在 Go 中验证 Firebase 实时数据库的服务帐户

json - 在 Go 中解码动态 json 内容

go - 如何省略结构Gin gonic的一些参数

go - Rethinkdb,去 : Ensure Table and Index in one ReQL statement

go - 跨多个项目构建具有 vendor 依赖关系的 Go 项目