我有这段代码:
func my_function(hash string) [16]byte {
b, _ := hex.DecodeString(hash)
return b // Compile error: fails since [16]byte != []byte
}
b
的类型将会是 []byte
。我知道 hash
的长度为32。我该如何让上面的代码工作?也就是说,我能不能以某种方式从长度不固定的字节数组转换为定长的字节数组?我不想分配16个新的字节并复制数据。
unsafe
是不能转换的。在amd64上,切片头本身有24个字节,并且当hex.DecodeString
返回时会被复制到堆栈中,哈希本身要比复制16字节的结果消耗更多的资源;我会选择打好你的战斗,不要太担心这个问题。 - twotwotwo