使用基本模板将字符串解组到地图结构(模板解析的反向过程)

时间:2019-03-08 21:49:42

标签: go go-templates

我很好奇,看看是否有一种方法可以从字符串和Go模板(template.Execute的反面)中整理地图或结构

例如,假设我们有以下用于文件名模式的模板

const NameTemplate = `{{ .Os.Type }}/{{ .Os.Variant }}!{{ .Os.Version }}!{{ .Name }}!{{ .Version }}`

假设我们有以下地图(在我的解决方案中使用结构,但是为了简单起见,我将在这里使用地图)

data := map[string]interface{}{
    "Name": "some-name",
    "Version": "1.0",
    "Os": map[string]interface{}{
        "Type": "linux",
        "Variant": "debian",
        "Version": "9.0",
    },
}

进行tmpl.Execute(NameTemplate, data)会导致linux/debian!9.0!some-name!1.0

现在,如果我们拥有该字符串linux/debian!9.0!some-name!1.0和上面NameTemplate定义的模板,该怎么办。是否有一种简单的方法来获取像data中定义的那样的映射(或结构)?

0 个答案:

没有答案