我想将随机值读入字节数组。它的工作原理如下:
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
如何在rand.Read中使用[20]字节?
答案 0 :(得分:5)
要创建由数组支持的切片,您可以编写例如hash[i:j]
(从索引i
返回一个切片到索引j-1
)。在您的情况下,您可以写:
var hash [20]byte
_, err := rand.Read(hash[0:20])
或者,因为默认端点是0
和数组长度:
var hash [20]byte
_, err := rand.Read(hash[:])
答案 1 :(得分:2)
您可以对其进行切片(see playground):
shash := hash[:]
rand.Read(shash)
如Go Slices: usage and internals中所述:
切片表达式的起始和结束索引是可选的;它们分别默认为零和切片的长度。