这似乎是这将是整个interwebs一个相当普遍的事情,丰富的实例,但我似乎无法找到如何将一个转换的例子[32]byte来[]byte。
[32]byte
[]byte
我有一个从外部库调用的函数,该函数返回一个数组
func Foo() [32]byte {...}
然后我需要将该结果传递给不同的函数以进行进一步处理。
func Bar(b []byte) { ... }
不幸的是,如果我尝试打电话
d := Foo() Bar(d)
我得到
cannot convert d (type [32]byte) to type []byte
正在做
[]byte(d)
好不了多少。我该怎么做,尤其是不创建数据副本(当我所做的只是传递数据时复制这些数据似乎很愚蠢)。
这应该有效:
func Foo() [32]byte { return [32]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'} } func Bar(b []byte) { fmt.Println(string(b)) } func main() { x := Foo() Bar(x[:]) }
它不会创建底层缓冲区的副本