使用反射包比较指针值

时间:2014-10-13 18:29:31

标签: reflection go

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

我正在尝试使用反射包,但它似乎没有正常工作,我无法弄清楚原因。

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

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

有关正在发生的事情的任何想法?

我的主要猜测是因为Interface()的返回类型显然是接口{},并且通过存储" null"在它内部,它并没有使它成为" null"了。任何方式?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

playground

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

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