为了账号安全,请及时绑定邮箱和手机立即绑定

使用反射包比较指针值

使用反射包比较指针值

Go
慕姐8265434 2021-08-23 16:05:05
我有一个包含很多字段的结构,我必须检查这些字段中是否有任何一个为空,而不必手动键入每个字段名称。该字段的类型始终是一个指针,因此我可以进行检查而不必担心零值。我正在尝试使用反射包来解决这个问题,但它似乎无法正常工作,我不知道为什么。这是一个复制我的问题的游乐场:http ://play.golang.org/p/LOb6a8eklE如您所见,如果我手动检查一切正常。当被要求打印时,它也会打印 null,但在比较时它的计算结果为 false。关于发生了什么的任何想法?我的主要猜测是因为 Interface() 的返回类型显然是 interface{},并且通过在其中存储“null”,它不再使它成为“null”。有什么办法吗?
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

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

playground

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

有关此主题的更多信息,请参阅nil 错误常见问题解答


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信