Go 範本中的有效欄位測試
在Go 的database/sql 套件中,Null[Type] 結構有助於將資料庫值映射到代碼空支援。然而,測試字段的無效性(即,當其 Valid 屬性為 false 時)會帶來一些挑戰。
顯示SQL 欄位的建議方法是透過.Value 屬性,例如:
{{ .MyStruct.MyField.Value }}
對於涉及值比較的更複雜場景,如果.MyField 無效,該方法可能會失敗,從而導致“比較類型無效”錯誤。最初,在進行比較之前測試 .MyField 是否為零似乎是一個簡單的解決方案。然而,這個方法失敗並出現同樣的錯誤。
Go 範本中的 and 函數應該能夠處理這種情況。然而,在早期的 Go 版本(
要解決此問題,您可以使用多個{{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>
此外,由於sql.NullXX 類型是不能為nil 的結構體值,因此檢查其Valid 欄位對於確定其Value() 方法是否有效至關重要將傳回非零值:
{{if $.MyStruct.MyField.Valid}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
這些技術可讓您有效地測試有效欄位是否存在並比較它們在Go 範本中的值。
以上是如何安全地比較 Go 範本中「sql.Null[Type]」欄位的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!