在Go语言中将固定大小的数组转换为可变大小的数组

27

我正在尝试将固定大小的数组 [32]byte 转换为可变大小的数组(切片)[]byte

package main

import (
        "fmt"
)

func main() {
        var a [32]byte
        b := []byte(a)
        fmt.Println(" %x", b)
}

但编译器抛出了错误:

./test.go:9: cannot convert a (type [32]byte) to type []byte

我应该如何转换它?

2个回答

40
使用b := a[:]来获取您拥有的数组的切片。有关数组和切片的更多信息,请参见博客文章。

19

Go语言中没有变长数组,只有切片。如果想要获取整个数组的切片,请按照以下方式操作:

b := a[:] // Same as b := a[0:len(a)]

3
请注意,切片的行为有点像可变大小的数组,如果您在切片上不断使用append,它将在需要时通过重新分配来增长。 - Rick-777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接