首頁  >  文章  >  後端開發  >  與切片元素比較時如何處理 Golang 範本中的空值?

與切片元素比較時如何處理 Golang 範本中的空值?

DDD
DDD原創
2024-10-25 12:35:03214瀏覽

How to Handle Null Values in Golang Templates when Comparing with Slice Elements?

在Golang 範本中處理Null 值

場景

在Golang 的database/sql 套件中,Null[Type] 結構可幫助處理資料庫值及其可能的值空值。然而,測試空值可能具有挑戰性。使用 .Value 列印 SQL 欄位很簡單,但在更複雜的場景中對值進行評估可能會導致問題。

問題

考慮以下模板代碼:

<select name="y">
   {{ range .SomeSlice }}
       <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option>
   {{ end }}
</select>

此程式碼嘗試根據$.MyStruct.MyField.Value 和.. 的相等性來設定選定的屬性。但是,如果 .MyField 無效,則會發生錯誤。

此問題有兩種解。

使用巢狀if 語句

{{if $.MyStruct.MyField}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}

使用with 指令

<select name="y">
   {{range $idx, $e := .SomeSlice}}
       <option value="{{.}}">{{with $.MyStruct.MyField}}
               {{if eq .Value $e}}selected="selected"{{end}}
           {{end}}</option>
   {{end}}
</select>

🎜>
{{if $.MyStruct.MyField.Valid}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Null[Type] 結構體是非零的,因此請檢查Valid 欄位以確定Value() 是否將傳回非零值。

以上是與切片元素比較時如何處理 Golang 範本中的空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn