Maison > Article > développement back-end > Comment puis-je mapper le type bit(1) de MySQL à un type Go à l'aide de l'ORM de Beego ?
Type de bits de MySQL : une correspondance parfaite avec le bool personnalisé de Go
Question :
Dans une table de base de données avec une colonne de type bit(1), comment puis-je la mapper à un type Go à l'aide de l'ORM de Beego ?
Réponse :
Puisque Go n'a pas de colonne de type build -dans le type pour bit(1), l'approche recommandée consiste à créer un type bool personnalisé.
Bool personnalisé pour Bit(1) de MySQL
Pour résoudre ce problème, un type personnalisé Un type booléen peut être créé pour gérer la colonne bit(1).
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 }
Utilisation dans Go Struct
Pour utiliser le type BitBool personnalisé dans une structure Go, déclarez-le simplement comme type pour le champ correspondant :
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:"-"` }
En utilisant un type BitBool personnalisé, vous pouvez mapper le type bit(1) de MySQL à un type Go qui gère la manipulation des bits de manière appropriée, en évitant les erreurs qui surviennent en utilisant le type booléen par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!