首頁  >  文章  >  後端開發  >  如何檢查 Go 模板中空類型的有效欄位?

如何檢查 Go 模板中空類型的有效欄位?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 04:45:02574瀏覽

How to Check for Valid Fields in Go Templates with Null Types?

Go 範本中的有效欄位測試

在 Go 的 database/sql 套件中,Null 類型提供了一種表示可為空的資料庫值的機制。在模板表達式中確定結構體中的欄位是否為 null(Valid 為 false)可能具有挑戰性。

要列印 SQL 欄位的值,通常使用 .Value 屬性。但是,當將欄位的值與另一個值進行比較時,如果該欄位為空,則可能會出現問題。直接測試 nil(例如,如果 $.MyStruct.MyField == nil)將不起作用,因為欄位不是 nil,而是空 Null 結構。

Go 範本中的 and 函數會評估其所有參數,甚至如果結果已經確定。因此,如果 $.MyStruct.MyField 為 null,則使用 {{ if and ($.MyStruct.MyField) (eq $.MyStruct.MyField.Value .) }} 會導致錯誤。

相反,請使用嵌套{{ if }} 語句選擇性地計算表達式:

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

或者,使用{{ with }} 語句,但請注意它會設置點,需要仔細考慮:

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

請注意,上面的範例假設值不可為空。對於 Null 類型,直接檢查 Valid 欄位:

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

以上是如何檢查 Go 模板中空類型的有效欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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