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

go中的相等运算符和deepEquals有什么区别?

go中的相等运算符和deepEquals有什么区别?

Go
绝地无双 2021-12-20 19:30:39
阅读规范后,我得到了:如果所有字段都具有可比性,则结构值具有可比性。如果它们对应的非空白字段相等,则两个结构值相等。这对我来说意味着这样做structA == structB意味着结构中每个非空白字段的值都将fieldA == fieldB应用于它。那么为什么我们需要一个深度相等的概念呢?因为如果结构具有也是结构的字段,则提供的信息向我暗示将使用==也检查这些字段的相等性,所以肯定会触发向下遍历对象图吗?
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

你缺少的是指针。在执行==on 指针时,您应该检查指针值(两个内存地址)还是指向的值(两个变量)?当比较切片或映射时(两者都可以同化为由指针组成的结构)?

golang 的作者的决定是对==算子做严格的比较,并reflect.DeepEqual为那些想要比较他们切片内容的人提供方法。

我个人reflect.DeepEquals在测试中大量使用,因为函数的输出值可能是一个指针,但我真正想比较的是输出值的内容。


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号