猿问

从切片转换为数组?

我想知道是否有办法将适当大小的切片传递给需要数组的函数?


例如,是否有理由不允许我执行以下操作?


func p(arr [4]int) {

    for _, v := range arr {

        fmt.Print(v)

    }

}


func main() {

    data := make([]int, 10)

    for i, _ := range data {

        data[i] = i

    }


    p(data[0:4]) // error

}

我知道我可以创建一个副本:


arr := [4]int{}

copy(arr[:], data)

p(arr)

但这不就是创建一个不必要的副本吗?(因为我猜测arr必须在堆栈上制作另一个副本)


蓝山帝景
浏览 223回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答