英文:
How to scan a boolean, which may be NULL?
问题
我尝试将一个布尔结果扫描到一个布尔指针中:
var expired bool
db.QueryRow(context.Background(), sql, id, n).Scan(&expired)
这段代码出现以下错误:
无法将 NULL 扫描到 *bool 中的 dest[0]
在 Go 中,我应该使用哪种类型来扫描 SQL 中的布尔值,它可以是 true、false 或 NULL?
英文:
I try to scan a boolean result into a boolean pointer:
var expired bool
db.QueryRow(context.Background(), sql, id, n).Scan(&expired)
The code fails with the following error:
> can't scan into dest[0]: cannot scan NULL into *bool
Which Go type do I have to use to scan a SQL boolean, which can be true, false and NULL?
答案1
得分: 2
我的建议是在使用bool
时使用指针。
var expired *bool
db.QueryRow(context.Background(), sql, id, n).Scan(&expired)
因为bool
只有false
和true
两个值,它无法表示NULL
。
sql.NullBool也是一个不错的选择。
英文:
My preference is using a pointer for bool
var expired *bool
db.QueryRow(context.Background(), sql, id, n).Scan(&expired)
As bool
only have false
and true
values, it does not provide a way to represent NULL
.
sql.NullBool is alse a good choice.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论