美文网首页
Go语言之指针作为参数

Go语言之指针作为参数

作者: 测试探索 | 来源:发表于2020-06-02 06:23 被阅读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]
    

    相关文章

      网友评论

          本文标题:Go语言之指针作为参数

          本文链接:https://www.haomeiwen.com/subject/tjfjzhtx.html