0x05 Go 指针

发布时间 2023-06-12 10:36:00作者: CloverYou
  1. 基本数据类型,变量存的是一个值,基本数据类型也叫做值类型。

  2. 获取变量的内存地址,我们可以使用 & 符号,例如:

    var num int = 10
    fmt.Println("num =", &num)
    
    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/pointer [20:52:39] 
    $ go run main.go
    num = 0xc0000180a8
    
  3. 指针类型,*T 类型就是一个指针,指针变量存的是一个地址,这个地址指向的空间存的才是真正的值,例如:

    var num int = 10
    var prt *int = &num
    

    所谓的指针,其实就是一个存了其它变量内存地址的变量,例如以上代码

    假设:num 内存地址是 0xc0000180a8,prt 内存地址是 0xc000012028
    prt: 0xc000012028 --> 0xc0000180a8 --> 10
    
  4. 如果需要获取指针类型所指的指,可以使用 * 符号来取

    var num int = 10
    var prt *int = &num
    fmt.Println("prt =", *prt)
    
    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/pointer [21:07:38] 
    $ go run main.go
    prt = 10
    

指针的简单用法:

var num int = 9
var prt *int = &num

*prt = 10

fmt.Println(num) // 这里输出10而不是原先的9