• Go语言学习之值传递和引用传递解释And Go语言指针


      

    值传递与引用传递的解释

    上面提到了,当我们调用一个有参函数的时候,会把实际参数传递给形式参数。但是,在程序语言中,这个传递过程中传递的两种情况,即值传递和引用传递。我们来看下程序语言中是如何定义和区分值传递和引用传递的。

    值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

    引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

    参考地址:https://blog.csdn.net/w372426096/article/details/82216742

    Go语言指针

    什么是指针

    就是变量在内存中的地址,它所指向的值的内存地址在32位和64位机器上分别占用4和8字节;

    当一个指针被定义后 没有分配到 任何变量时,它的默认值为nil;

    指针变量通常缩写为ptr

    如何使用指针

    示例1

    package main
    
    import "fmt"
    
    func main(){
        var a int = 20       //声明一个实际变量
        var ptr *int         //声明一个指针变量,代表ptr这个变量是 指针变量
        ptr = &a             //用&取出a的内存地址,并赋值给ptr
        fmt.Printf("ptr变量的结果是: %x",ptr)
      
    fmt.Printf("ptr指针变量实际的值为: %d ", *ptr) //*ptr就是获取指针 实际对应的值
    } 

    结果:
    ptr变量的结果是: c000060090

    ptr指针变量实际的值为:10
     

    取地址操作符{ & }和取值操作符{ * }是一对互补操作符

    { & }取出内存地址,{ * }根据内存地址取出 内存地址 实际指向的值

    示例2

    package main
    
    import "fmt"
    
    func main(){
        var a int = 10                        //声明一个实际变量
        fmt.Printf("内存地址为:%x 
    ", &a)      //获取a变量的内存地址
        test(&a)                              //&a获取变量a的内存地址,传给test函数
    }
    
    //声明一个函数,接收一个参数,参数 必须是指针类型,ptr为形参
    func test(ptr *int) {
        fmt.Println(ptr)   //打印内存地址
    }
    
    
    结果:
    内存地址为:c000060090 
    0xc000010098
  • 相关阅读:
    iframe中的页面如何触发父页面事件
    js获取gridview的值
    不出现重复数字,带干扰的验证码
    文本框内不允许输入字母
    后台调用前台JS方法
    在后台得到前台元素,给元素改变属性值或添加属性
    C#常见面试题
    Flex代码生成器 (FCG)
    c#(WinForm)遍历局域网计算机(电脑)获取IP和计算机名称
    VisualSVN Server + Tortoise SVN 使用教程(补充版)
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/13793802.html
Copyright © 2020-2023  润新知