我想将sha256()的输出[32]字节与[]字节进行比较.

我收到一个错误"不匹配的类型[32]字节和[]字节".我无法将[]字节转换为[32]字节.

有什么办法可以做到这一点吗?

推荐答案

您可以通过切片将任何数组([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在 comments 中提到的,bytes包中还有一个Equal方法,bytes.Equal(x[:], y[:])

Go相关问答推荐

为什么我不能使用Docker从本地访问我的Gin应用程序?

golang.org/x/oauth2 oauth2.Config.Endpoint.TokenURL mock:缺少access_token

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

是不是有什么原因导致`Strings.EqualFold`不先进行长度比较?

`docker system df` 与 `/system/df` (docker api 端点)

nixOS 上的 Nginx 反向代理在try 加载 css/js 时返回 404

如何绕过深层 xml,没有嵌套循环?

命令行参数在 Golang 程序中不正确地接受为参数

一个Go module可以和之前的非module模块发布在同一个路径下吗?

linter 警告:返回值被忽略

Go Template if 条件

此 Golang 程序中的同步问题

缺少签名帮助文档

有没有办法计算枚举中定义的项目总数?

无法将 graphql-ws 连接到 gqlgen

没有任务角色的 AWS CDK ECS 任务定义

golang pic.ShowImage 为什么它不生成图像而是向我发送base64值

go 堆栈跟踪:在某些函数调用参数或返回值之后的问题(?)标记是什么意思?

将 CSVExport 函数传递给处理程序 Gin

Go 错误:Is() 和 As() 声称是递归的,是否有任何类型实现错误接口并支持这种递归 - 无错误?