首頁  >  文章  >  後端開發  >  如何使用 Beego 的 ORM 將 MySQL 的 bit(1) 類型對應到 Go 類型?

如何使用 Beego 的 ORM 將 MySQL 的 bit(1) 類型對應到 Go 類型?

DDD
DDD原創
2024-11-17 04:14:03399瀏覽

How can I map MySQL's bit(1) type to a Go type using Beego's ORM?

MySQL 的位元類型:與Go 的自訂Bool 完美匹配

問題:

問題:在資料庫表中對於bit(1) 類型列,如何使用Beego 將其對應到Go 類型ORM?

答案:

由於 Go 沒有內建的 bit(1) 類型,因此建議的方法是建立自訂 bool 類型。

type BitBool bool

// Value converts BitBool to a bitfield (BIT(1)) for MySQL storage.
func (b BitBool) Value() (driver.Value, error) {
    if b {
        return []byte{1}, nil
    } else {
        return []byte{0}, nil
    }
}

// Scan converts the incoming bitfield from MySQL into a BitBool.
func (b *BitBool) Scan(src interface{}) error {
    v, ok := src.([]byte)
    if !ok {
        return errors.New("bad []byte type assertion")
    }
    *b = v[0] == 1
    return nil
}
MySQL Bit(1) 的自訂 Bool

解決這個問題問題,可以建立自訂 bool 類型來處理 bit(1) 欄位。

type BaseModel struct {
    Id          string           `orm:"pk";form:"id"`
    CreatedTime time.Time        `orm:"auto_now_add;type(datetime)";form:"-"`
    UpdatedTime time.Time        `orm:"auto_now;type(datetime)";form:"-"`
    Deleted     BitBool  `form:"-"`
}
Go 結構中的用法

在Go 結構中使用自訂BitBool 類型,只需將其宣告為對應欄位的類型: 透過使用自訂BitBool 類型,您可以對應MySQL 的bit(1) 類型轉換為Go 類型,可以適當處理位元操作,避免使用預設bool 類型所造成的錯誤。

以上是如何使用 Beego 的 ORM 將 MySQL 的 bit(1) 類型對應到 Go 類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn