如何在crypto.rand.Read中使用[20]字节类型作为参数而不是[]字节?

Mic*_*ael 4 arrays random cryptography go

我想将随机值读入字节数组.它的工作原理如下:

hash = make([]byte,20)
_, err := rand.Read(hash)
Run Code Online (Sandbox Code Playgroud)

但我想做点什么

var hash [20]byte
_, err := rand.Read(hash)
Run Code Online (Sandbox Code Playgroud)

这导致了

cannot use hash (type [20]byte) as type []byte in argument to "crypto/rand".Read
Run Code Online (Sandbox Code Playgroud)

如何在rand.Read中使用[20]字节?

rua*_*akh 5

要创建由数组支持的切片,可以编写eg hash[i:j](从索引返回一个切片i到索引j-1).在你的情况下,你可以写:

var hash [20]byte
_, err := rand.Read(hash[0:20])
Run Code Online (Sandbox Code Playgroud)

或者,因为默认端点是0和数组长度:

var hash [20]byte
_, err := rand.Read(hash[:])
Run Code Online (Sandbox Code Playgroud)