【发布时间】:2016-09-20 16:17:35
【问题描述】:
以下是我使用服务呈现节点地址的代码:
{{range "service@datacenter" "passing"}}{{.Address}} {{end}}
我想要做的是限制呈现的地址数量。例如,如果有 5 个节点注册为“服务”提供者,我只想打印其中 2 个的地址。我认为我应该做的是对数组进行切片,但我无法正确使用 GO 语法。这是我想要但语法不正确的东西:
{{range "service@datacenter" "passing" [0:2]}}{{.Address}} {{end}}
这样做的正确方法是什么?
【问题讨论】:
-
我知道 Go 模板,但我不知道 consul。也许像
{{range $i := loop 2}}{{$service := (index (service "foo" "passing"))}}{{$service.Address}}{{end}}这样的东西?如果少于两个,这将失败。 -
从我收集的信息来看,$service 似乎是一个数组,所以
{{$service.Address}}抛出了一个错误,因为 $service 中没有 .Address 元素。最重要的是,我们如何限制我们打印的地址数量?我试图朝这个方向努力并尝试做一个{{$x := service "foo" "passing"}}{{range $i := loop 2}}{{$y := (index $x $i)}}{{$y.Address}}{{end}},但它给出了'index out of bound:0'错误。也许我没有正确使用索引功能。
标签: go consul consul-template