在Golang中处理可选的布尔值

lyo*_*ssp 4 go

我无法理解如何解决我目前在自己的应用程序中遇到的问题.

想象一下这个构建模型传入请求的结构示例和一个将该请求中的字段放入数据库的函数.

type NewBooleanRequest struct {
    RequiredString string `json:"requiredString"`
    OptionalBoolean bool `json:"maybeBoolean"`
}

func LogBooleanRequest(req NewBooleanRequest, db *sql.DB) {
    db.Exec("INSERT INTO log (booleanValue, stringValue) VALUES ($1, $2)", req.OptionalBoolean, req.RequiredString)
}
Run Code Online (Sandbox Code Playgroud)

现在这显然可行,如果我知道我将为我的请求模型的所有字段赋值,但这不是现实中的常见要求.人们通常如何为bool值赋予"可选"语义模型,因为它bool具有在基本上所有上下文中都有效的零值?

Fli*_*mzy 9

这个问题并不是针对布尔值的,所有NULLable类型都是常见的.最简单的解决方案是使用指针(*bool在您的示例中).sql包中提供的常见类型也有Nullable值.sql.NullBool在这种情况下你会想要的那个.

  • 这主要取决于你将如何与价值互动.在某些情况下处理指针可能很麻烦.尝试一下,如果你发现它很痛苦,试试另一个,我想. (3认同)