So ordnen Sie den Bit-Typ von MySQL dem Typ von Go zu
In MySQL wird der Datentyp bit(1) zum Speichern boolescher Werte verwendet. Bei der Migration zu Go stehen Entwickler häufig vor der Herausforderung, den geeigneten Go-Typ für die Zuordnung zu bestimmen.
Frage:
Im bereitgestellten Beispiel enthält die MySQL-Tabelle eine Spalte mit dem Namen vom Typ Bit(1) gelöscht. Welcher Go-Typ sollte verwendet werden, um diese Spalte in einer Go-Struktur darzustellen?
Antwort:
Der empfohlene Ansatz ist die Verwendung eines benutzerdefinierten Datentyps, wie er von der SQLX-Bibliothek bereitgestellt wird. sqlx definiert einen Typ namens BitBool, der speziell BIT(1)-Werte verarbeitet:
// BitBool is an implementation of a bool for the MySQL type BIT(1). // This type allows you to avoid wasting an entire byte for MySQL's boolean type TINYINT. type BitBool bool
BitBool implementiert die notwendigen Schnittstellen zum Konvertieren zwischen dem Bool-Typ von Go und dem BIT(1)-Typ von MySQL:
// Value implements the driver.Valuer interface, // and turns the BitBool into 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 implements the sql.Scanner interface, // and turns the bitfield incoming 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 }
In der bereitgestellten Go-Struktur sollte „Gelöscht“ wie folgt deklariert werden:
Deleted BitBool `form:"-"`
Das obige ist der detaillierte Inhalt vonWie soll ich den Typ „bit(1)' von MySQL einem Go-Typ zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!