通过Go中的反射检测空值的快速方法

通过Go中的反射检测空值的快速方法,第1张

通过Go中的反射检测空值的快速方法

据我了解,您想要的是:

func IsZeroOfUnderlyingType(x interface{}) bool {    return x == reflect.Zero(reflect.TypeOf(x)).Interface()}

在谈论接口和时

nil
,人们总是对两个截然不同且无关的事物感到困惑:

  1. nil
    接口值,其是不具有一个接口值 的基础值 。这是接口类型的零值。
  2. nil
    接口值(即,它具有 基础值 ),但是其基础值是其基础类型的零值。例如,基础值是
    nil
    映射,
    nil
    指针或0数字等。

据我了解,您正在询问第二件事。


更新 :由于上面的代码的使用

==
,它对于不可 比较的
类型无效。我相信,使用
reflect.DeepEqual()
代替将使它适用于所有类型:

func IsZeroOfUnderlyingType(x interface{}) bool {    return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface())}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5012994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存