阅读规范后,我得到了:
如果结构的所有字段都可比较,则它们的值可比较。如果两个结构值对应的非空白字段相等,则它们相等。
对我而言,这意味着这样做structA == structB意味着该结构中每个非空白字段的值都将fieldA == fieldB应用于该字段。那么,为什么我们需要一个深度平等的概念?因为如果该结构具有也属于该结构的字段,则所提供的信息对我而言意味着也将使用来检查这些字段的相等性==,因此肯定会触发遍历对象图的遍历吗?
您缺少的是指针。在执行==on指针时,应该检查指针值(两个内存地址)还是指针值(两个vars)?当比较切片或映射时(两者都可以与指针组成的结构同化)?
golang的作者的决定是与==运算符进行严格比较,并为reflect.DeepEqual想要比较其切片内容的用户提供该方法。
我亲自reflect.DeepEquals在测试中广泛使用,因为函数的输出值可能是指针,但是我真正想比较的是输出值的内容。
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |