如何使用 [20]bytes 类型作为参数而不是 crypto.rand.Read 中的 []bytes?
How can I use [20]bytes type as parameter instead of []bytes in crypto.rand.Read?
我想将随机值读入字节数组。它是这样工作的:
hash = make([]byte,20)
_, err := rand.Read(hash)
但我想做类似的事情
var hash [20]byte
_, err := rand.Read(hash)
这导致
cannot use hash (type [20]byte) as type []byte in argument to "crypto/rand".Read
如何将 [20] 字节与 rand.Read 一起使用?
要创建一个由数组支持的切片,您可以编写例如hash[i:j]
(其中 returns 从索引 i
到索引 j-1
的切片)。在你的情况下,你可以写:
var hash [20]byte
_, err := rand.Read(hash[0:20])
或者,因为默认端点是 0
和数组长度:
var hash [20]byte
_, err := rand.Read(hash[:])
你可以切片 (see playground):
shash := hash[:]
rand.Read(shash)
如Go Slices: usage and internals所述:
The start and end indices of a slice expression are optional; they default to zero and the slice's length respectively.
我想将随机值读入字节数组。它是这样工作的:
hash = make([]byte,20)
_, err := rand.Read(hash)
但我想做类似的事情
var hash [20]byte
_, err := rand.Read(hash)
这导致
cannot use hash (type [20]byte) as type []byte in argument to "crypto/rand".Read
如何将 [20] 字节与 rand.Read 一起使用?
要创建一个由数组支持的切片,您可以编写例如hash[i:j]
(其中 returns 从索引 i
到索引 j-1
的切片)。在你的情况下,你可以写:
var hash [20]byte
_, err := rand.Read(hash[0:20])
或者,因为默认端点是 0
和数组长度:
var hash [20]byte
_, err := rand.Read(hash[:])
你可以切片 (see playground):
shash := hash[:]
rand.Read(shash)
如Go Slices: usage and internals所述:
The start and end indices of a slice expression are optional; they default to zero and the slice's length respectively.