图解Go的unsafe.Pointer

本文介绍了Go语言中的`unsafe.Pointer`,它是C语言中不安全指针的类似物,可以指向任何类型的数据。文章首先解释了变量和指针的概念,然后讨论了Go语言中对指针的约束,最后详细阐述了`unsafe.Pointer`的特性及其使用规则,并提醒读者因其能绕过类型系统,使用时需谨慎。
摘要由CSDN通过智能技术生成

相信看过Go源码的同学已经对unsafe.Pointer非常的眼熟,因为这个类型可以说在源码中是随处可见:mapchannelinterfaceslice…但凡你能想到的内容,基本都会有unsafe.Pointer的影子。

看字面意思,unsafe.Pointer是“不安全的指针”,指针就指针吧,还安不安全的是个什么鬼?

接下来,我们就来了解一下Go的这个“不安全的指针”unsafe.Pointer

什么叫变量

在了解指针之前,我们有必要先了解一下什么叫“变量”。
其实变量就是一个内存地址的名字,这听起来可能有些奇怪:指针不是地址码?
听我细细来讲:此地址非彼地址。通常,我们要在计算机内存中存数据,我们会怎么做?
我们肯定说:“计算机,在0x0201地址内存一个数100”。就这一句话,别看它糙,实际上在计算机中真就这么干的。然后我们接着说:“在0x0202中存什么,在0x0203中存什么,把0x0203中的值变为0x0201中的值…”

这些“0x0201”、“0x0202”、“0x0203”…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜刚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值