图解Go引用的底层实现

Go怎么可能有引用?得了吧~
有人要说了,那利用make()函数执行后得到的slice、map、channel等类型,不都是得到的引用吗?

我要说:那能叫引用吗?你能确定啥叫引用吗?
如果你有点迷糊,那么请听我往下讲:

这一切要从变量说起。

什么是变量

无论是引用变量还是指针变量,都是变量;那么,什么叫变量?
其实变量本质就是一块内存。通常,我们对计算机内存进行操作,最直接的方式就是:“计算机,在0x0201地址内存一个整数100,在0x00202地址存一个浮点数10.6,读取0x00203的数据…” 这种方式让机器来操作还行,如果直接写成代码让人看的话,这一堆“0x0201、0x0202…”难记的地址能把人给整崩溃了~
于是,聪明的人们想出了一种方法:把一堆难记的地址用其他人类可以方便读懂的方式来间接表示。例如:将“0x0201”的地址命名为“id”,将“0x0202”命名为“score”…然后,代码编译期间,再将"name"等人类能读懂的文字转化为真实的内存地址;于是,变量诞生了~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜刚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值