MySQL のビット型: Go のカスタム ブールとの完全一致
質問:
データベース テーブル内bit(1) 型の列がある場合、Beego の ORM を使用して Go 型にマッピングするにはどうすればよいですか?
答え:
Go にはビルドされたbit(1) の -in 型の場合、推奨されるアプローチは、カスタム bool 型を作成することです。
MySQL の Bit(1) のカスタム Bool
この問題を解決するには、カスタム bool 型を作成します。 bit(1) 列を処理するために bool 型を作成できます。
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 }
Go 構造体での使用法
Go 構造体でカスタム BitBool 型を使用するには、それを宣言するだけです。対応するフィールドの型として:
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:"-"` }
カスタム BitBool 型を使用すると、MySQL の bit(1) 型をビット操作を適切に処理する Go 型にマップでき、次のようなエラーが発生するのを回避できます。デフォルトの bool 型を使用します。
以上がBeego の ORM を使用して MySQL の bit(1) 型を Go 型にマッピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。