MySQL の 'bit' 型を Go にマッピング: Go 型の選択を理解する
MySQL では、'bit' データ型は単一ビットを表します値。ブール状態を示すためによく使用されます。 Beego などの ORM を介して MySQL で Go を使用する場合、この「ビット」タイプのマッピングに適切な Go タイプを選択することが重要です。
Java と Go データ型の考慮事項
前述したように、Java はそのようなシナリオに「bit(1)」タイプを利用します。ただし、Go にはネイティブの「ビット」型がありません。したがって、どの Go 型が「ビット」値を適切に表現できるかを判断する必要があります。
Bool または Custom Type?
最初は、 「ビット」データのブール型の性質に対応する「ブール」タイプを選択します。ただし、'bool' を使用すると、データベースと対話するときに変換エラーが発生する可能性があります。
カスタム BitBool 実装
この問題に対処するために、Go ライブラリ 'Sqlx' が提供するMySQL の「ビット」データをマッピングするために特別に設計されたカスタムの「BitBool」タイプ。この型は、driver.Valuer インターフェイスと sql.Scanner インターフェイスを実装し、ブール値と 'bit(1)' ビットフィールド間の変換を効果的に行います。
Beego ORM 実装
内Beego ORM 構造体に「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」タイプを利用することで、「bit(1)」データを Beego プロジェクト内の Go の「BitBool」タイプに効果的にマッピングできます。データベース スキーマを変更する必要はありません。
以上がMySQL の「bit」タイプを Go にマッピングする方法: Bool または Custom Type?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。