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中文網其他相關文章!