猿问

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

阅读规范后,我得到了:

如果所有字段都具有可比性,则结构值具有可比性。如果它们对应的非空白字段相等,则两个结构值相等。

这对我来说意味着这样做structA == structB意味着结构中每个非空白字段的值都将fieldA == fieldB应用于它。那么为什么我们需要一个深度相等的概念呢?因为如果结构具有也是结构的字段,则提供的信息向我暗示将使用==也检查这些字段的相等性,所以肯定会触发向下遍历对象图吗?


绝地无双
浏览 214回答 1
1回答

元芳怎么了

你缺少的是指针。在执行==on 指针时,您应该检查指针值(两个内存地址)还是指向的值(两个变量)?当比较切片或映射时(两者都可以同化为由指针组成的结构)?golang 的作者的决定是对==算子做严格的比较,并reflect.DeepEqual为那些想要比较他们切片内容的人提供方法。我个人reflect.DeepEquals在测试中大量使用,因为函数的输出值可能是一个指针,但我真正想比较的是输出值的内容。
随时随地看视频慕课网APP

相关分类

Go
我要回答