Go语言函数间传递切片的问题

时间:2022-07-22
本文章向大家介绍Go语言函数间传递切片的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

GoInAction

Go 语言函数间传递切片,也是在函数间以值传递的方式进行的,由于切片的大小比较小,在函数间复制和传递的成本是比较低的。

// 分配包含100w个整型值的切片
slice := make([]int, 1e6)

// 将 slice 传递到函数 foo
slice = foo(slice)

// 函数 foo 接收一个整型切片,并返回这个切片
func foo(slice []int) []int {
    ...
    return slice
}

成本低的原因是去切片内部的实现只有3个字段,分别是指向底层数组的指针,切片的长度和切片的容量。

也就是说,存储一个切片,只需要24个字节即可。在函数传递的时候,只会复制切片本身,而不会涉及其底层指向的数组。