2 回答
TA贡献1853条经验 获得超18个赞
查看 Go 标准库,数组似乎经常用于已知长度的散列之类的东西。例如sha256.Sum256返回一个[sha256.Size]byte
where sha256.Size
is 32。或者查看digest
实现hash.Hash
接口的结构,其中sha256
包含[chunk]byte
where chunk
is 64,即 sha256 块大小。
我认为通常使用数组来避免不必要的内存分配。要利用对可变长度切片进行操作的算法,您可以将数组转换为切片而无需使用x[:]
.
package main
import (
"crypto/sha256"
"fmt"
)
type myHash struct {
x [32]byte
}
func print(b []byte) {
fmt.Print(b)
}
func main() {
b := []byte("Hello world!")
h := myHash{x: sha256.Sum256(b)}
print(h.x[:])
}
TA贡献1808条经验 获得超4个赞
切片在 Go 中是一流的,并且根据它们与标准库中数组的比较用法,它似乎是首选方式。
将数组转换为切片也很简单:
package main
import (
"fmt"
)
func main() {
array := [5]int{1, 2, 3, 4, 5}
slice := array[:]
fmt.Println("Hello, playground", array, slice)
}
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报