首頁 > 後端開發 > Golang > 主體

如何安全地比較 Go 範本中「sql.Null[Type]」欄位的值?

Patricia Arquette
發布: 2024-10-28 05:36:30
原創
472 人瀏覽過

How to  Safely Compare Values from  `sql.Null[Type]` Fields in Go Templates?

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="{{.}}&quot; {{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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!