3 回答

TA贡献1846条经验 获得超7个赞
reflect.DeepEqual(a, b)
返回 false,因为您正在比较两种类型。
var a = []byte("qwedsa") //here a is a slice with length 6
var b [6]byte //here b is a array with length 6
您可以使用不同的选项来执行此操作,如下所述。
reflect.DeepEqual(a, b[:]) //by getting a slice from b array
使用这个而不是反射包,因为反射不利于性能,正如Adrian在他的评论中提到的
bytes.Equal(a, b[:])
直接创建为长度为(如果不需要将其用作数组)的切片。
b
a
var b = make([]byte, len(a)) bytes.Equal(a, b)

TA贡献1801条经验 获得超8个赞
这样做是这样的:
package main
import "bytes"
func main() {
var (
a = []byte("qwedsa")
b [6]byte
)
copy(b[:], a)
println(bytes.Equal(a, b[:]))
}
https://golang.org/pkg/bytes#Equal

TA贡献1836条经验 获得超5个赞
根据建议,您必须将其转换为并使用 。下面是相同的实现:byte arraybyte slicebytes.Equal
package main
import (
"bytes"
"fmt"
)
func main() {
var a = []byte("qwedsa")
var b [6]byte
sliceb := b[:]
copy(sliceb, a)
fmt.Println(bytes.Equal(a, sliceb))
}
输出:
true
- 3 回答
- 0 关注
- 119 浏览
添加回答
举报