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

如何區分 Go 結構中的 Nil 值和空值?

Susan Sarandon
發布: 2024-10-24 11:50:01
原創
317 人瀏覽過

How to Differentiate Between Nil and Empty Values in Go Structs?

區分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 中,字串類型的零值是空字串。因此,使用標準字串類型無法區分未設定的字串欄位和空字串欄位。對於資料庫整合:

  • 對於 MySQL 用戶,請考慮使用 database/sql.NullString 類型。
  • 對於 PostgreSQL 用戶,另一種方法是在資料庫中定義自訂類型: DECLARE TYPE 語法,然後使用對應的 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中文網其他相關文章!

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