为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中比较[32]byte和[]byte?

如何在golang中比较[32]byte和[]byte?

Go
幕布斯6054654 2021-09-10 16:55:01
我想比较 [32] 字节和 [] 字节的 sha256.Sum256() 的输出。我收到错误“类型不匹配 [32] 字节和 [] 字节”。我无法将 []byte 转换为 [32]byte。有没有办法做到这一点?
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以通过切片轻松地将任何数组 ([size]T) 转换为切片 ([]T):


x := [32]byte{}

slice := x[:] // shorthand for x[0:len(x)]

从那里您可以将它与您的切片进行比较,就像比较任何其他两个切片一样,例如


func Equal(slice1, slice2 []byte) bool {

    if len(slice1) != len(slice2) {

        return false

    }


    for i := range slice1 {

        if slice1[i] != slice2[i] {

            return false

        }

    }


    return true

}

编辑:正如 Dave 在评论中提到的,包中还有一个Equal方法bytes,bytes.Equal(x[:], y[:])


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 1079 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信