【问题标题】:How do I pass a byte array to a function which accepts a byte slice? [duplicate]如何将字节数组传递给接受字节切片的函数? [复制]
【发布时间】:2020-07-21 17:32:03
【问题描述】:

假设我有一个

Type T [64]byte

我想使用“crypto/rand”包用随机字节填充 T 类型的对象。

T obj
rand.Read(obj)

显然这不起作用,我该怎么做。我认为顶部的类型声明相当于 C++ 中的 typedef。

【问题讨论】:

  • Read 需要一个切片,看起来您正在尝试定义一个数组(这里的语法是无效的 Go)。 “围棋之旅”在这里介绍了这一点:tour.golang.org/moretypes/7

标签: go types arguments


【解决方案1】:

正如 JimB 所指出的,您正在尝试将 [64]byte 传递给采用 []byte 的函数,而这些类型并不等效。您可以在整个数组上传递一个切片,它工作正常:

rand.Read(obj[:])

工作示例:https://play.golang.org/p/eARFfn4bDzQ

Tour of Go 对此进行了介绍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2020-10-02
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多