【问题标题】:Compare strings in templates比较模板中的字符串
【发布时间】:2015-06-28 15:52:02
【问题描述】:

我有以下模板:

{{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 .

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

【问题讨论】:

    标签: go-templates


    【解决方案1】:

    eq is function,不是操作员。它的调用形式为:eq &lt;x&gt; &lt;y&gt;(不是&lt;x&gt; eq &lt;y&gt;)。

    您可以通过将操作数从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}}
    

    【讨论】:

      【解决方案2】:

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

      {{ 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

      【讨论】:

        猜你喜欢
        • 2012-06-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-20
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        相关资源
        最近更新 更多