go 数组传递给函数三种方式

func main() {

    arr1 := [5]int{}

    //值传递
    arr(arr1)
    fmt.Println(arr1)

    //& 地址传递 (指针)
    arra(&arr1)
    fmt.Println(arr1)

    //切片 地址传递
    arrs(arr1[:])
    fmt.Println(arr1)

}

func arr(a [5]int)   { a[0] = 100 }  //[0 0 0 0 0]
func arra(a *[5]int) { a[0] = 200 }  //[200 0 0 0 0]
func arrs(a []int)   { a[0] = 300 }  //[300 0 0 0 0]

把一个大数组传递给函数会消耗很多内存。 有两种方法可以避免这种现象:

切片更常用

  • 传递数组的指针
  • 使用数组的切片
本作品采用《CC 协议》,转载必须注明作者和本文链接
wubuze
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!