go 陣列 new ()

wubuze發表於2019-12-04
    arr1 :=  [5]int
    arr1x :=  arr1   //值傳遞
    arr1x[0] = 100

    fmt.Println(arr1, arr1x)
    //輸出:  [0 0 0 0 0]    [100 0 0 0 0]   
    //arr1 不變

    arr2 := new([5]int)
    arr2x := arr2  //地址傳遞
    arr2x[0] = 200

    fmt.Println(arr2, arr2x)
    //輸出 : &[200 0 0 0 0] &[200 0 0 0 0]     
    //arr2 被改變

    arr3 := *arr2  //地址傳遞加上*   相當於值傳遞了
    arr3[1] = 300
    fmt.Println(arr2, arr2x)
    //輸出:  [200 300 0 0 0]              &[200 0 0 0 0]

相關文章