我有一个比较两个指向结构(MyStruct
)实例的指针是否相等的测试。指针存储在其他结构(container1
和container2
)中。这是我检查相等性的方法:
require.Equal(*container1.MyStruct, *container2.MyStruct)
该Equals()
方法来自Testify库:https ://github.com/stretchr/testify/blob/master/require/require_forward.go#L128
当我在我的 Mac 上运行它时,这个测试通过了。但是,当我将更改推送到我们的构建服务器 (Linux) 时,测试失败。错误消息是标准Error: Not equal...
消息,但是当我区分输出中显示的预期和实际时,它们完全相同!
我想也许 Go 是以某种方式比较指针的地址而不是内容,但是 require.Equal 上的评论使这看起来不太可能:
// Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses)
知道这里发生了什么吗?Go 在 Mac 和 Linux 上的行为是否不同?
我无法在此处发布详细信息,因为这是我在工作中接触的代码库中看到的一个问题。
慕神8447489
相关分类