使用db.Query
和rows.Scan
填充sql.NullString
NULL
值,使其.Valid
字段为false
后,是吗?保证其.String
将保留空字符串""
?
我问,因为如果我可以使用它会很时髦:
res := ns.String
而不是:
var res string
if ns.Valid {
res = ns.String
}
答案 0 :(得分:3)
在current implementation是的,但文档明确指出在使用String之前检查有效。忽略文档需要您自担风险。
如果您想要安全,只需将类型复制到您自己的包中;那么你知道它不会随着下一个Go版本而改变。
如果你不这样做,我强烈建议你写一个测试:
func TestEmptyNullString(t *testing.T) {
var x sql.NullString
x.String = "foo"
x.Scan(nil)
if x.String != "" {
t.Error("string not empty after Scan")
}
}