Go的sql.NullString的值是否可预测为空?

时间:2018-04-02 22:25:03

标签: go

使用db.Queryrows.Scan填充sql.NullString NULL值,使其.Valid字段为false后,是吗?保证其.String将保留空字符串""

我问,因为如果我可以使用它会很时髦:

res := ns.String

而不是:

var res string
if ns.Valid {
    res = ns.String
}

https://golang.org/pkg/database/sql/#NullString

1 个答案:

答案 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")
    }
}