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

Ste*_*ein 16 arrays type-conversion go

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

package main

import (
        "fmt"
)

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

但编译器抛出错误:

./test.go:9: cannot convert a (type [32]byte) to type []byte
Run Code Online (Sandbox Code Playgroud)

我该如何转换它?

Mak*_*poc 20

使用b := a[:]让您在阵列上切片.有关阵列和切片的更多信息,请参阅博客文章.


Ain*_*r-G 13

Go中没有可变大小的数组,只有切片.如果您想获得整个数组的一部分,请执行以下操作:

b := a[:] // Same as b := a[0:len(a)]
Run Code Online (Sandbox Code Playgroud)

  • 请注意,切片的行为有点像可变大小的数组,如果你在切片上继续使用`append`,它会在必要时通过重新分配来增长. (2认同)