次のよう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())
}
ありがとう!