这似乎是一个相当普遍的事情,在互联网上有大量的例子,但我似乎找不到一个如何将[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)
我该怎么做呢,尤其是在不创建数据副本的情况下(当我所做的只是传递沿着时,复制这些数据似乎很愚蠢)。
5条答案
按热度按时间vmpqdwk31#
这应该行得通:
并且它不会创建基础缓冲区的副本
ffscu2ro2#
xqk2d5yq3#
这就可以了:
还可以避免复制基础缓冲区。
roejwanj4#
通常可以使用
:
按数组的边界对其进行切片:更一般地说,对于以下数组:
您可以通过编写以下内容来生成不同大小的切片:
如果
START_SLICE
等于下限,则忽略START_SLICE
;如果START_SLICE
等于上限,则忽略END_SLICE
,在您的情况下:生成基础数组的切片,等效于:
gojuced75#
假设您有一个现有的数组my_array,那么创建一个新切片并将array追加到其中