在 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中文網其他相關文章!