我正在使用 go 模板通过 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 函数?
最佳答案
如果有人需要,
{{if $service | regexMatch "^[-a-z0-9]{1,}$"}}
来自 https://golang.org/pkg/text/template/ .
具体来说:
{{流水线}} 管道值的默认文本表示 被复制到输出。
{{if pipeline}} T1 {{end}} 如果管道的值为空,则不产生输出; 否则,执行 T1。空值为 false、0、any nil 指针或接口(interface)值,以及任何数组、 slice 、映射或 长度为零的字符串。 点不受影响。
关于function - 在 if 语句中使用函数 return 或在 go 模板中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083810/