我有一个包含很多字段的结构,我必须检查这些字段是否为null,而不必手动键入每个字段名称。字段的类型总是一个指针,所以我可以检查而不必担心零值。
我正在尝试使用反射包,但它似乎没有正常工作,我无法弄清楚原因。
这是一个复制我的问题的游乐场:
http://play.golang.org/p/LOb6a8eklE
正如您所看到的,如果我手动检查一切正常。当被要求打印时,它也会打印出null,但是在比较时,它的计算结果为false。
有关正在发生的事情的任何想法?
我的主要猜测是因为Interface()的返回类型显然是接口{},并且通过存储" null"在它内部,它并没有使它成为" null"了。任何方式?
谢谢!
答案 0 :(得分:0)
使用IsNil()确定指针是否为零。
表达式v.Interface() == nil
始终为false,因为Interface()返回具有关联类型的值。
有关此主题的更多信息,请参阅nil error FAQ。