给定下一个类型结构定义:
type A struct {
Id int
Bs []B
Sub C
}
type B struct {
Id int
Str string
}
type C struct {
Id int
Ds []D
}
type D struct {
Id int
Num int
}
字符串
我想测试A的下两个示例是否在语义上相等,无论切片元素在所有层次结构级别中的顺序如何。
var want = &A{
Id: 1,
Bs: []B{{Id: 10, Str: "b10"}, {Id: 20, Str: "b20"}},
Sub: C{
Id: 100,
Ds: []D{{Id: 101, Num: 1001}, {Id: 102, Num: 1002}},
},
}
var got = &A{
Id: 1,
Bs: []B{{Id: 20, Str: "b20"}, {Id: 10, Str: "b10"}},
Sub: C{
Id: 100,
Ds: []D{{Id: 102, Num: 1002}, {Id: 101, Num: 1001}},
},
}
型
assert比较应该返回true
1条答案
按热度按时间4szc88ey1#
包cmp旨在成为
reflect.DeepEqual
的更强大和更安全的替代品,用于比较两个值在语义上是否相等。这里是语义相等结构比较的完整实现,而不管切片元素在所有层次结构级别上的顺序。
文件源.go
字符串
文件source_test.go
型