使用go模板生成go模板

问题描述 投票:0回答:1

我想使用go模板生成类似{{ .Values.something }}的东西。

但是我无法弄清楚我的模板应该是什么样子,例如,我想到这样的模板

`"{{.Values."{{ .Value }}"}}"`

并针对此结构执行它

type values struct {
    Value string
}

但是它没有用,我也尝试了其他一些组合,但是没有运气。有人可以帮我弄清楚如何从go模板中获得{{ .Values.something }}此输出。

go go-templates
1个回答
0
投票

由于模板中的{{}}是特殊的,因此您必须使用操作来输出它们,例如

{{ "{{" }}

{{ "}}" }}

一个可行的解决方案:

t := template.Must(template.New("").Parse(`{{"{{"}} .Values.{{.Value}} {{"}}"}}`))

buf := &bytes.Buffer{}

params := map[string]interface{}{
    "Value": "Something",
}

if err := t.Execute(buf, params); err != nil {
    panic(err)
}

fmt.Println(buf.String())

此输出(在Go Playground上尝试):

{{ .Values.Something }}
© www.soinside.com 2019 - 2024. All rights reserved.