深入解析:golang中的指针

指针及其内存分布

指针

有地址的。就是指针实际上是一种引用数据类型。它的作用是指向一个空间的地址。当然,指针自己也
比如现在有个指针
var ptrint = &i
我们可以通过&ptr来确定指针的地址
通过
ptr来获得指针指向的空间内存储的东西
在声明和赋值指针时
我们会写出var ptr *int 等语句,这里的 *int表示的ptr指向的空间存储的是int类型的值

在这里插入图片描述

var num int = 1 中,num变量指向内存中分配给它的一个空间,这个空间用于存储num被赋予的值。

每个空间都是有地址的

  • var i = 999同理

var ptr *int = &i
表示ptr这个指针变量,指向一个内存空间,这个内存空间存储的是i指向的空间的地址。
当然ptr指向的空间也是有地址的,许可通过&ptr来获取该地址

指针用例及易错点

指针用例

var num int = 988
var ptr *int = &num
fmt.Printf(“%v,%v,%v”,*ptr,ptr,&ptr)
输出结果为:988,0xc00000a0e8,0xc000066060

易错点

  • 值就是注意,指针变量接收的是地址,而不
    var num int = 988
    var ptr *int = &num //正确

  • var num int = 988
    var ptr *int = num //错误

  • var num int = 988
    var ptr *float64 = &num
    这样子的代码也会通不过编译
    原因:var ptr *float64只能接受存储float64类型值得空间地址

指针的使用细节

值类型:所有的值类型都有自己的指针类型,形式为*数据类型,比如int对应的指针类型是 *int,而float32对应的指针类型为 *float32

那么值类型包括哪些呢?
基本数据类型int系列,float系列,bool,string,数组,结构体(struct)

posted @ 2025-07-29 14:50  wzzkaifa  阅读(6)  评论(0)    收藏  举报