34

我有以下模板:

{{if . eq "login failed"}}
<span class="text-error">Incorrect username or password</span>
{{else if . eq "login success"}}
<span class="text-success">You have successfully logged in!</span>
{{end}}

我在执行模板时传递了一个字符串。

但是,我收到以下错误:

executing "login.html" at <.>: can't give argument to non-function .

如何比较模板中的字符串?

4

2 回答 2

71

eq是函数,而不是运算符。它以以下形式调用:eq <x> <y>(not <x> eq <y>)。

您可以通过将操作数从侧面移动到后面来修复模板eq

{{if eq . "login failed"}}
<span class="text-error">Incorrect username or password</span>
{{else if eq . "login success"}}
<span class="text-success">You have successfully logged in!</span>
{{end}}
于 2015-06-28T16:17:49.497 回答
4

比较两个字符串是否相等:

{{ if eq .Status "Approved" }}
       ...Do something
{{ else }} 
       ...Do something else
{{ end }}

比较两个字符串是否不相等:

  {{ if ne .Status "" }}  // If status is not empty 
           ...Do something
  {{ else }} 
           ...Do something else
  {{ end }}

这里有更多的 golang HTML 模板指令:https ://pkg.go.dev/text/template#hdr-Actions

于 2021-07-21T16:31:49.183 回答