如何在Go模板的单个语句中使用多个参数

时间:2015-05-15 22:51:23

标签: templates go

我试图在单个if语句中管道多个条件(使用text/template包),这应该转换为" 如果$total == 1和{{ 1}}函数返回has显示false "。我不明白管道是如何工作的,也不知道为什么我会得到这种无意义的错误。据我所知,当使用链接时(works),它将结果作为参数发送到最后一个命令(在这种情况下为|

and

{{if eq $total 1 | ne has true | and}} Works {{end}}

1 个答案:

答案 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(因为我无法告诉你从哪里得到它)。