如何检查golang模板中字符串的空值
how to check empty value of a string in golang template
我在 golang 模板代码片段下面有这个,我从类型 map[string]interface{}
的映射中获取值并检查该字符串是否为空,但我的字符串空检查失败,如下所示:
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 link):
https://play.golang.org/p/uisbAr_3Qy
您正在做的事情存在一些问题:如果您将地图用于上下文,则根本不需要使用索引,因此不需要您的变量。如果你想检查一个键是否存在,只需使用 if 检查一个 nil 条目。如果您的映射包含接口类型的元素,则无法与字符串进行比较,仅当您确定有一个元素但不确定它可能是什么时才使用 eq ,如果不确定是否是,则将其包装在 if 测试中密钥存在。
我想你想做这样的事情:
{{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
请参阅 text/template 的文档,因为它们有更多详细信息:
如果要与 null(nil) 进行比较,请使用:https://github.com/Masterminds/sprig/issues/53#issuecomment-483414063
{{ kindIs "invalid" $value }}
我在 golang 模板代码片段下面有这个,我从类型 map[string]interface{}
的映射中获取值并检查该字符串是否为空,但我的字符串空检查失败,如下所示:
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 link):
https://play.golang.org/p/uisbAr_3Qy
您正在做的事情存在一些问题:如果您将地图用于上下文,则根本不需要使用索引,因此不需要您的变量。如果你想检查一个键是否存在,只需使用 if 检查一个 nil 条目。如果您的映射包含接口类型的元素,则无法与字符串进行比较,仅当您确定有一个元素但不确定它可能是什么时才使用 eq ,如果不确定是否是,则将其包装在 if 测试中密钥存在。
我想你想做这样的事情:
{{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
请参阅 text/template 的文档,因为它们有更多详细信息:
如果要与 null(nil) 进行比较,请使用:https://github.com/Masterminds/sprig/issues/53#issuecomment-483414063
{{ kindIs "invalid" $value }}