我试图在单个if语句中管道多个条件(使用text/template包),这应该转换为" 如果$total
== 1和{{ 1}}函数返回has
显示false
"。我不明白管道是如何工作的,也不知道为什么我会得到这种无意义的错误。据我所知,当使用链接时(works
),它将结果作为参数发送到最后一个命令(在这种情况下为|
)
and
{{if eq $total 1 | ne has true | and}}
Works
{{end}}
答案 0 :(得分:1)
我不确定为什么这个有趣的错误消息,但你实际上是将3个参数传递给ne
,这会触发错误:
(from the text/template package)
通过用管道符“|”分隔一系列命令,可以“链接”管道。在链式管道中,每个命令的结果将作为以下命令的最后一个参数传递。管道中最终命令的输出是管道的值。
所以你给ne
函数has
的结果,值true
和第一个表达式的结果。
获得你想要的东西:
{{if eq $total 1 | and (not has)}}
Works
{{end}}
这将比较作为第二个参数传递的eq $total 1
(或$total == 1
)与and
的结果以及has
的否定结果,从而仅打印Works
时的$total == 1 AND has returns false
。
查看工作示例on the Playground。请注意,我用一个简单的结构替换了$ total(因为我无法告诉你从哪里得到它)。