【发布时间】:2021-09-02 08:47:01
【问题描述】:
我正在尝试编写一个单元测试用例,其中我使用reflect.DeepEqual 到compare 计算和预期结果。结构中的条目之一是字节切片,DeepEqual 不断失败。
示例代码https://goplay.space/#OcAPkK-EqDX
package main
import (
"fmt"
"reflect"
)
func main() {
var a = []byte("qwedsa")
var b [6]byte
copy(b[:], a)
fmt.Println(reflect.DeepEqual(a, b), len(a), len(b), cap(a), cap(b))
}
【问题讨论】:
-
reflect.DeepEqual在这里返回false,因为a和b具有不同的类型(a具有类型[]byte,而b具有类型[6]byte)和@987653 @。请改用b := make([]byte, len(a))。 -
DeepEqual在比较字节时也不必要地繁重,因为它是基于反射的。只需使用bytes.Equal,这就是它的用途。 -
@Adrian 好点!
标签: unit-testing go