在Go中将数组转换为切片

这似乎是这将是整个interwebs一个相当普遍的事情,丰富的实例,但我似乎无法找到如何将一个转换的例子[32]byte[]byte

我有一个从外部lib调用的函数,该函数返回一个数组

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[:])

}

而且它不会创建基础缓冲区的副本

以上是 在Go中将数组转换为切片 的全部内容, 来源链接: utcz.com/qa/416369.html

回到顶部