區分Go 結構中的Nil 和空值
在Go 中,區分nil 值(即從不set)和一個空值或空白值(例如空字串)。在處理來自資料庫或使用者輸入的資料時,這種區別至關重要。
問題:
考慮以下Go 結構:
type Organisation struct { Category string Code string Name string }
如果使用者未設定類別欄位或儲存為空白字串,則必須確定該值是否代表缺失值或空用戶選擇。
解決方案:
一種方法是使用指針字段:
type Organisation struct { Category *string Code *string Name *string }
對於指針字段,nil 值表示未設置的字段,而帶有空字串的非nil 值表示空選擇。
資料庫處理:
在 Go 中,字串類型的零值是空字串。因此,使用標準字串類型無法區分未設定的字串欄位和空字串欄位。對於資料庫整合:
範例:
這裡有一個使用sql.NullString:
<code class="go">type Organisation struct { Category sql.NullString Code string Name string } // Check if Category is set and not NULL if organisation.Category.Valid && organisation.Category.String != "" { // Category was set and has a value } else { // Category is either unset or NULL }</code>
這種方法可讓您區分未設定和空字串值,確保在資料庫操作中正確處理資料。
以上是如何區分 Go 結構中的 Nil 值和空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!