将 MySQL 的“bit”类型映射到 Go:了解 Go 类型选择
在 MySQL 中,“bit”数据类型代表单个位值,通常用于指示布尔状态。当通过像 Beego 这样的 ORM 将 Go 与 MySQL 结合使用时,必须选择适当的 Go 类型来映射此“位”类型。
Java 与 Go 数据类型注意事项
如前所述,Java 在此类场景中使用“bit(1)”类型。然而,在 Go 中,没有原生的“位”类型。因此,我们需要确定哪种 Go 类型能够充分表示“位”值。
Bool 类型还是自定义类型?
最初,使用Go 'bool'类型,对应于'bit'数据的布尔性质。然而,在与数据库交互时使用 'bool' 可能会导致转换错误。
自定义 BitBool 实现
为了解决这个问题,Go 库 'Sqlx' 提供了专门为映射 MySQL 的“位”数据而设计的自定义“BitBool”类型。该类型实现了 driver.Valuer 和 sql.Scanner 接口,有效地将布尔值与 'bit(1)' 位字段相互转换。
Beego ORM 实现
内在您的 Beego ORM 结构体中,您现在可以对“Deleted”字段使用“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 或自定义类型?的详细内容。更多信息请关注PHP中文网其他相关文章!