string - 如何检查golang模板中字符串的空值

标签 string go go-templates

我在 golang 模板代码片段下面有这个,我从 map[string]interface{} 类型的 map 中获取值。并检查该字符串是否为空,但我的字符串空检查失败,因为: template: apps.html:62:29: executing "apps.html" at <eq $src "">: error calling eq: invalid type for comparison .我也尝试打印空值,它呈现为 <nil>但是我的{{if eq $src "<nil>"}}检查也失败了,即使我把 nil然后它也失败了。有没有更好的方法来实现这一目标。

    {{$src := (index . "source")}}
    {{$tar := (index . "target")}}
    {{if eq $src ""}}
          <div></div>
    {{else}}
          <div style="display:none;">
              <input id="username" name="source" value="{{ $src }}"/>
              <input id="username" name="target" value="{{ $tar }}"/>
          </div>
    {{end}}

最佳答案

这是您正在做的事情(如果可能,最好给出一个示例 play.golang.org 链接):

https://play.golang.org/p/uisbAr_3Qy

您正在做的事情存在一些问题:如果您将 map 用于上下文,则根本不需要使用索引,因此不需要您的变量。如果你想检查一个键是否存在,只需使用 if 检查一个 nil 条目。如果您的映射包含接口(interface)类型的元素,则无法与字符串进行比较,仅当您确定有一个元素但不确定它可能是什么时才使用 eq ,如果不确定是否是,则将其包装在 if 测试中 key 存在。

我想你想做这样的事情:

{{if .source }}
  <div style="display:none;">
    <input id="username" name="source" value="{{ .source }}"/>
    <input id="username" name="target" value="{{ .target }}"/>
  </div>
{{else}}
  <div>empty</div>
{{end}}

https://play.golang.org/p/D2DCjAklFE

请参阅文本/模板的文档,因为它们有更多详细信息:

https://golang.org/pkg/text/template/#hdr-Actions

关于string - 如何检查golang模板中字符串的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434592/

相关文章:

arrays - 在 Golang 中创建此 JSON 对象的最佳方法

if-statement - 如果不是真的 (!true)

go - 重新定义 Go 模板 : sometimes works, 有时会失败

Oracle 的 TO_DATE 中的 Java Date.toString

Javascript 检查字符串是否仅包含 nbsp;

golang json marshal 将标签转换为utf符号

go-templates - 如何处理Golang模板中JS和CSS的路径

java - StringTokenizer 中的连续分隔符

c# - 找到最接近的字符串匹配

git - 当 git clone 工作时,Go mod tidy 在私有(private)存储库上失败