问题内容 我的 yml 参数看起来像 nodes: one, two instanceminone: 1 instancemaxone: 2 instancemintwo: 4 ins
我的 yml 参数看起来像
nodes: one, two
instanceminone: 1
instancemaxone: 2
instancemintwo: 4
instancemaxtwo: 6
有没有一种方法可以使用Go模板动态读取例如instanceminone,其中变量名称由instancemin
+来自节点列表的动态值组成?
类似的东西(这显然不起作用,但只是给出了我想要实现的目标的想法)
{{ - range $nodeName := (split .Parameters.nodes) } } } }
instance-min: {{ .Parameters.instanceMin$nodeName }}
instance-max: {{ .Parameters.instanceMan$nodeName }}
{{ - end }}
要实现您想要的目标,您必须解决 2 个任务:
对于连接,您可以使用内置的 print
函数,例如
{{ $key := print "instancemin" $nodename }}
对于索引,请使用内置的 index
函数:
instance-min: {{ index $.parameters $key }}
(注意:{{range}}
操作会更改点,因此在其中您需要 $
来引用循环变量外部。)
或者一行:
instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
查看可运行的演示:
func main() {
t := template.must(template.new("").parse(src))
params := map[string]any{
"parameters": map[string]any{
"nodes": []string{"one", "two"},
"instanceminone": 1,
"instancemaxone": 2,
"instancemintwo": 4,
"instancemaxtwo": 6,
},
}
if err := t.execute(os.stdout, params); err != nil {
panic(err)
}
}
const src = `{{- range $idx, $nodename := .parameters.nodes }}
instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
instance-max: {{ index $.parameters (print "instancemax" $nodename) }}
{{- end }}`
这将输出(在 go playground 上尝试):
instance-min: 1
instance-max: 2
instance-min: 4
instance-max: 6
以上就是Go Template 动态获取变量的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: Go Template 动态获取变量
本文链接: https://www.lsjlt.com/news/561248.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0