ホームページ > バックエンド開発 > Golang > Beego の ORM を使用して MySQL の bit(1) 型を Go 型にマッピングするにはどうすればよいですか?

Beego の ORM を使用して MySQL の bit(1) 型を Go 型にマッピングするにはどうすればよいですか?

DDD
リリース: 2024-11-17 04:14:03
オリジナル
466 人が閲覧しました

How can I map MySQL's bit(1) type to a Go type using Beego's ORM?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート