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

标签 function templates go

我正在使用 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/

相关文章:

javascript - 解析 JSON 以在 Javascript 中创建对象

templates - 如何为 SQL Server 2005 Reporting Services 报告创建模板?

c++ - 在 C++ 中获取属于另一个具有多重继承的类的类的指针

go - 编写像 node.js 应用程序这样的 go 程序而无需 go 路径

html - 你如何在 Go 中转义原始 HTML?

jquery - 当取消选中复选框时,找到所有具有匹配类的 div 并将其删除。查询

javascript - 类型错误 : - is not a function

c++ - 将用户定义的模板类的实例传递给非模板函数

pointers - 为什么必须对指针使用星号而不是结构指针?

python - 向函数添加行