Go语言之指针作为参数

2020-06-02  本文已影响0人  测试探索
值类型参数传递
package main

import "fmt"

func main(){
    a := 10
    fmt.Println("fun1()函数调用前a的值:",a)
    fun1(a)
    fmt.Println("fun1()函数调用后a的值:",a)

    fun2(&a)
    fmt.Println("fun2()函数调用后a的值:",a)
}

func fun1(num int) {
    fmt.Println("fun1()函数中,num的值:",num)
    num = 100
    fmt.Println("fun1()函数中修改num的值:",num)
}

func fun2(p1 *int) {
    fmt.Println("fun2()函数中,p1的值:",p1)
    *p1 = 200
    fmt.Println("fun2()函数中修改p1的值:",*p1)
}
//结果
fun1()函数调用前a的值: 10
fun1()函数中,num的值: 10
fun1()函数中修改num的值: 100
fun1()函数调用后a的值: 10
fun2()函数中,p1的值: 0xc0000a0068
fun2()函数中修改p1的值: 200
fun2()函数调用后a的值: 200

image.png
数组作为参数
package main

import "fmt"

func main(){
    arr1 := [4]int{1,2,3,4}
    fmt.Println("fun3()函数调用前arr1的值:",arr1)
    fun3(arr1)
    fmt.Println("fun3()函数调用后arr1的值:",arr1)

    fun4(&arr1)
    fmt.Println("fun4()函数调用后arr1的值:",arr1)
}

func fun4(p2 *[4]int){  //引用传递
    fmt.Println("fun4()函数中数组指针:",p2)
    p2[0] = 200
    fmt.Println("fun4()函数中修改后数组指针:",p2)
}

func fun3(arr2 [4]int){  //值传递
    fmt.Println("fun3()函数中数组:",arr2)
    arr2[0] = 100
    fmt.Println("fun3()函数中修改数组:",arr2)
}
//结果
fun3()函数调用前arr1的值: [1 2 3 4]
fun3()函数中数组: [1 2 3 4]
fun3()函数中修改数组: [100 2 3 4]
fun3()函数调用后arr1的值: [1 2 3 4]
fun4()函数中数组指针: &[1 2 3 4]
fun4()函数中修改后数组指针: &[200 2 3 4]
fun4()函数调用后arr1的值: [200 2 3 4]
上一篇 下一篇

猜你喜欢

热点阅读