我使用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函数?
答案 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不受影响。