You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言sql.NullString的Value是否可预测为空?Valid为false时取值疑问

关于Go语言sql.NullString的两个关键问题解答

咱来拆解你关心的这两个核心点:

1. sql.NullString的Value()方法行为是否可预测?

完全可以预测!根据标准库的定义:

  • 当ns.Valid为true时,Value()会返回ns.String的字符串值,对应SQL中的非空字符串;
  • 当ns.Valid为false时,Value()会返回nil,对应SQL中的NULL值。
    这个逻辑是固定无歧义的,完全可以放心依赖它的行为。

2. Scan到NULL值时,String字段是否一定为空字符串""?

答案是肯定的!当你通过rows.Scan把SQL的NULL值扫描到sql.NullString变量时,标准库的Scan方法会自动把该变量的Valid设为false,同时强制将String字段置为空字符串""。

也就是说,不管String字段之前是什么值,只要扫描的是NULL,最终它都会被重置为空串。所以你完全可以放心直接写:

res := ns.String

不用额外加判断逻辑——因为哪怕Valid是false,String也一定是空串,不会出现随机的垃圾值。

内容的提问来源于stack exchange,提问作者Miles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:39:53