Wie soll ich den Typ „bit(1)' von MySQL einem Go-Typ zuordnen?

Susan Sarandon
Freigeben: 2024-11-23 06:41:16
Original
820 Leute haben es durchsucht

How should I map MySQL's `bit(1)` type to a Go type?

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
Nach dem Login kopieren

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
}
Nach dem Login kopieren

In der bereitgestellten Go-Struktur sollte „Gelöscht“ wie folgt deklariert werden:

Deleted     BitBool `form:"-"`
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage