1 回答
TA贡献1848条经验 获得超2个赞
它们不相等,因为它比较的是指针而不是指针的值。你有几个选择。
不要使用指针,您将无法在任一结构中使用切片,您可以使用固定大小的数组。
自己写,自己
func (p *packet) Equals(o *packet) bool
比较。使用
reflect.DeepEqual
,这是迄今为止最慢/效率最低的解决方案,我个人会选择#2。
#2 的简单实现:
func (h *header) Equal(o *header) bool {
return h != nil && o != nil &&
h.dataLength == o.dataLength &&
h.optDataLength == o.optDataLength &&
h.packetType == o.packetType
}
func (p *packet) Equal(o *packet) bool {
return p != nil && o != nil &&
p.header.Equal(o.header) &&
p.syncByte == o.syncByte &&
p.headerCrc == o.headerCrc &&
p.dataCrc == o.dataCrc &&
bytes.Equal(p.data, o.data) &&
bytes.Equal(p.optData, o.optData)
}
- 1 回答
- 0 关注
- 256 浏览
添加回答
举报