GO语言-数组传递

// t2 project main.go
package main

import (
    "fmt"
)

func changeArr1(arr [6]int) { //传递的是数组(拷贝的)"[6]int",这个函数不会改变原始数组的值
    arr[0] = 250
    for i, v := range arr {
        fmt.Println(i, v)
    }
}

func changeArr2(arr *[6]int) { //传递的是指针"*[6]int",这个函数会改变原始数组的值
    arr[0] = 250
    for i, v := range arr {
        fmt.Println(i, v)
    }
}

func main() {
    arr1 := [...]int{1, 3, 5, 7, 9, 11}
    fmt.Println("#打印arr1如下(原始数组):")
    fmt.Println(arr1)
    fmt.Println("#调用changeArr1打印结果如下:")
    changeArr1(arr1)
    fmt.Println("#打印arr1如下(值未改变):")
    fmt.Println(arr1)
    fmt.Println("调用changeArr2打印结果如下:")
    changeArr2(&arr1)
    fmt.Println("#打印arr1如下(值已改变):")
    fmt.Println(arr1)
}
C:/Go/bin/go.exe build [C:/Users/vijay/src/t2]
warning: GOPATH set to GOROOT (C:\Go) has no effect
成功: 进程退出代码 0.
C:/Users/vijay/src/t2/t2.exe  [C:/Users/vijay/src/t2]
#打印arr1如下(原始数组):
[1 3 5 7 9 11]
#调用changeArr1打印结果如下:
0 250
1 3
2 5
3 7
4 9
5 11
#打印arr1如下(值未改变):
[1 3 5 7 9 11]
调用changeArr2打印结果如下:
0 250
1 3
2 5
3 7
4 9
5 11
#打印arr1如下(值已改变):
[250 3 5 7 9 11]
成功: 进程退出代码 0.

 

posted on 2019-02-12 15:59  vijayfly  阅读(138)  评论(0)    收藏  举报

导航