【问题标题】:Comparing pointer values using reflect package使用反射包比较指针值
【发布时间】:2014-10-13 18:29:31
【问题描述】:

我有一个包含很多字段的结构,我必须检查这些字段是否为空,而不必手动键入每个字段名称。该字段的类型始终是一个指针,因此我可以检查而不必担心零值。

我正在尝试使用反射包来解决这个问题,但它似乎无法正常工作,我不知道为什么。

这是一个复制我的问题的游乐场:
http://play.golang.org/p/LOb6a8eklE

如您所见,如果我手动检查一切正常。当被要求打印时,它也会打印 null,但在比较时它的计算结果为 false。

对正在发生的事情有什么想法吗?

我的主要猜测是因为 Interface() 的返回类型显然是 interface{},并且通过在其中存储“null”,它不再使其成为“null”。有什么办法吗?

谢谢!

【问题讨论】:

    标签: reflection go


    【解决方案1】:

    使用IsNil() 来确定指针是否为零。

    playground

    表达式 v.Interface() == nil 始终为 false,因为 Interface() 返回具有关联类型的值。

    有关此主题的更多信息,请参阅nil error FAQ

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多