MySQLs Bittyp: Eine perfekte Übereinstimmung mit Go's Custom Bool
Frage:
In einer Datenbanktabelle Wie kann ich eine Spalte vom Typ bit(1) mithilfe von Beego einem Go-Typ zuordnen? ORM?
Antwort:
Da Go keinen integrierten Typ für Bit(1) hat, besteht der empfohlene Ansatz darin, einen benutzerdefinierten Bool-Typ zu erstellen.
Benutzerdefinierter Bool-Typ für MySQL's Bit(1)
Um dieses Problem zu lösen, kann ein benutzerdefinierter Bool-Typ verwendet werden erstellt, um die Spalte bit(1) zu verarbeiten.
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 }
Verwendung in Go-Struktur
Um den benutzerdefinierten BitBool-Typ in einer Go-Struktur zu verwenden, deklarieren Sie ihn einfach als Typ für das entsprechende Feld:
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:"-"` }
Durch die Verwendung eines benutzerdefinierten BitBool-Typs können Sie den bit(1)-Typ von MySQL einem Go-Typ zuordnen, der das verarbeitet Bit-Manipulation entsprechend durchführen und so die Fehler vermeiden, die durch die Verwendung des Standard-Bool-Typs entstehen.
Das obige ist der detaillierte Inhalt vonWie kann ich den bit(1)-Typ von MySQL mithilfe des ORM von Beego einem Go-Typ zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!