2

次のよう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())
}

ありがとう!

4

1 に答える 1