在 Go 文本模板中遍历地图

我有一个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())

}


慕侠2389804
浏览 196回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go