美文网首页
Go-Pointer

Go-Pointer

作者: SodaCrush | 来源:发表于2021-03-29 21:03 被阅读0次

    go 指针

    声明指针类型

    • x 错误写法
      此时创建的是一个空指针,而空指针无法获取到内存地址,也就无法根据内存地址找到指向的值
    var a *int
    *a = 100
    
    • 正确写法
      通过内置new函数申请内存地址,此时a的值为int类型的0值
    var a  = new(int)
    *a = 100
    

    取指针地址

    &符号进行取址操作,例如:&student

    取指针地址指向的值

    *符号进行取值操作,例如:*student

    var a int = 10
    // 将a的内存地址赋给ptrA
    var ptrA *int = &a
    // 修改ptrA指向的值
    *ptrA = 100
    fmt.Println(a) 
    

    new 和 make 的区别

    • new函数 func new(Type) *Type
      new函数一般用来创建一个类型的指针,该指针对应的值为该类型的零值
    • make函数 func make(t Type, size ...IntegerType) Type
      make函数同样也是分配内存的,但只用于slice、map以及chan的内存创建,返回的类型就是这三个类型本身,而不是他们的指针类型

    相关文章

      网友评论

          本文标题:Go-Pointer

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