我有一个map
看起来像这样的值:
vals := map[string]interface{}{"foo": 1, "bar": 2, "baz": 7}
data := map[string]interface{}{"bat": "obj", "values": vals}
我的模板应该是什么样子才能生成以下字符串(注意正确的逗号用法)?
SET obj.foo=1, obj.bar=2, obj.baz=7
我从这个作为我的模板开始:
SET {{range $i, $v := .values}} {{.bat}}.{{$i}}={{$v}},{{end}}
但这只是打印出来
SET
即使这确实有效,逗号也是不正确的。然后我尝试使用自定义函数来格式化地图,但我无法让模板调用我的函数。以下似乎都不起作用:
SET {{.MyFunction .values}}
SET {{call .MyFunction .values}}
SET {{call MyFunction .values}}
当 MyFunction 被定义为:
func MyFunction(data map[string]interface{}) string {
fmt.PrintLn('i was called!')
return "foo"
}
我正在使用如下所示的辅助函数执行模板:
func useTemplate(name string, data interface{}) string {
out := new(bytes.Buffer)
templates[name].Execute(out, data)
return string(out.Bytes())
}
谢谢!