go 陣列傳遞給函式三種方式

wubuze發表於2019-12-04
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]

把一個大陣列傳遞給函式會消耗很多記憶體。 有兩種方法可以避免這種現象:

切片更常用

  • 傳遞陣列的指標
  • 使用陣列的切片

相關文章