我很好奇,看看是否有一种方法可以从字符串和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
中定义的那样的映射(或结构)?