Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh memetakan jenis bit(1) MySQL kepada jenis Go menggunakan ORM Beego?
Jenis Bit MySQL: Padanan Sempurna dengan Bool Tersuai Go
Soalan:
Dalam jadual pangkalan data dengan lajur jenis bit(1), bagaimana saya boleh memetakannya kepada jenis Go menggunakan Beego ORM?
Jawapan:
Memandangkan Go tidak mempunyai jenis terbina dalam untuk bit(1), pendekatan yang disyorkan ialah mencipta jenis bool tersuai.
Bool Tersuai untuk Bit MySQL(1)
Untuk menyelesaikan isu ini, jenis bool tersuai boleh dibuat untuk mengendalikan lajur 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 }
Penggunaan dalam Go Struct
Untuk menggunakan jenis BitBool tersuai dalam struct Go, hanya isytiharkannya sebagai taip untuk medan yang sepadan:
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:"-"` }
Dengan menggunakan jenis BitBool tersuai, anda boleh memetakan jenis bit(1) MySQL kepada Go jenis yang mengendalikan manipulasi bit dengan sewajarnya, mengelakkan ralat yang timbul daripada menggunakan jenis bool lalai.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memetakan jenis bit(1) MySQL kepada jenis Go menggunakan ORM Beego?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!