在go模板中使用if语句或变量中的函数return

时间:2016-06-28 18:36:14

标签: function templates go

我使用go模板使用consul-template过滤掉不正确命名的服务。我从consul-template提供了一个函数regexMatch,其工作原理如下:

{{"foo.bar" | regexMatch "foo([.a-z]+)"}}

根据字符串返回true或false。我想在if语句中有条件地使用它,类似于我用其他代码过滤掉名称为" consul"的服务。这是这样的:

{{range services}} {{$service:=.Name}} {{if not (eq $service "consul")}}

问题是我无法在if语句或变量声明中嵌套函数调用。我试过了

{{if {$service | regexMatch "^[-a-z0-9]{1,}$"}}}}

{{$syntax= {$service | regexMatch "^[-a-z0-9]{1,}$"}}}}

但我收到了这些错误:

unexpected "{" in if
unexpected bad character U+003D '='

如何在此go模板的if语句中使用regexMatch函数?

1 个答案:

答案 0 :(得分:2)

如果有人需要它,

{{if $service | regexMatch "^[-a-z0-9]{1,}$"}} 

来自https://golang.org/pkg/text/template/

具体是:

{{管道}}     管道值的默认文本表示     被复制到输出。

{{if pipeline}} T1 {{end}}     如果管道的值为空,则不生成输出;     否则,执行T1。空值为false,0,any     nil指针或接口值,以及任何数组,切片,映射或     长度为零的字符串。     Dot不受影响。