首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go中相等运算符与deepEquals的区别是什么?

go中相等运算符与deepEquals的区别是什么?
EN

Stack Overflow用户
提问于 2016-03-16 18:05:02
回答 1查看 1.6K关注 0票数 7

在阅读了规格之后,我得到了:

如果所有字段都是可比的,则结构值是可比较的。如果两个结构值对应的非空白字段相等,则两个结构值相等.

对我来说,这意味着执行structA == structB意味着结构中每个非空白字段的值将被应用到fieldA == fieldB中。那么,为什么我们需要一个深度平等的概念呢?因为如果结构中的字段也是结构化的,那么所提供的信息就意味着这些字段也将使用==被检查是否相等,所以这肯定会触发遍历对象图吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 18:10:47

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

戈朗作者的决定是与==算子进行严格的比较,并为那些想要比较切片内容的人提供reflect.DeepEqual方法。

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36043575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档