Go语言的指针 、值类型、引用类型(21.8.13)

361 阅读1分钟

Go语言的指针

基本数据类型: 变量存储的就是值,也叫值类型

指针: 数据在内存中的地址称为指针

指针变量:指针变量存储的是一个地址,地址指向的内存空间存放的是值

    // 定义一个基本数据类型
    var num int = 18// 通过 &num 获取 num 的地址
    fmt.Println("num的地址是",&num)
​
    // 定义一个指针变量存储 num 的地址 *指示这是一个指针变量
    var ptr *int = &num
​
    // 查看ptr的数据类型,结果为 *int
    fmt.Printf("prt的数据类型是 %T \n",ptr)
​
    // 查看ptr的地址
    fmt.Println("ptr的地址为",&ptr)
​
    //查看ptr所存的地址指向的值  通过*ptr取值
    fmt.Println("ptr所存的地址指向的值是",*ptr)
指针的使用细节

值类型都有对应的指针类型,形式为 数据类型 ,如int类型的指针类型就是int

值类型和引用类型

什么是值类型:

变量直接存储值,内存直接分配在栈中

什么是引用类型:

变量存储的是一个地址,这个地址对应的空间才是正常存储的数据,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址就变成一个垃圾,有GC回收

值类型: 基本数据类型,包括int系列、float系列、bool、string、数组、结构体

引用类型:指针、slice、map、chan(管道)、interface等都是引用类型