タイプmap[string]interface{}
のマップから値を取得し、その文字列が空であるかどうかを確認するgolangテンプレートコードスニペットの下にこれがありますが、文字列の空のチェックは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
実行中のいくつかの問題:コンテキストにマップを使用している場合、インデックスをまったく使用する必要がないため、変数は必要ありません。キーが存在するかどうかを確認する場合は、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-48341406
{{ kindIs "invalid" $value }}