重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍Go指针是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、网站设计、玉溪网络推广、成都小程序开发、玉溪网络营销、玉溪企业策划、玉溪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供玉溪建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
结合这个例子分析一下
结果:
结合以往C语言的基础,画了一张图来解释为什么会有上面这些值的出现。先查看下Go中的这两个运算符是啥吧。
①对于所有带a的结果
var a int = 1 定义了一个变量a值为1,如下图所示:
&a就是这个存放a变量值的地址
*&a 就是指向&a的一个指针,*&a = a = 1
②所有带b结果
var b *int = &a
类似C语言的 int *b = &a 定一个指向整形变量的指针b,b指向了a的地址
所以:
b = &a = 0xc04203c1d0
&b = 0xc042058018 &b是b这个指针变量的真实地址,就是执行后那个
*&b = *(&b) = b = &a = 0xc04203c1d0
*b = *&a = a = 1
③所有带c的结果
如上图所示:
var c **int = &b
实际上是定义了一个指向整形指针的指针变量
c = &b = 0xc042058018
*c = *&b = b = &a = 0xc04203c1d0
&c 是这个变量的真实地址,这里显示的就是运行的结果 0xc042068020
*&c 有经验可以发现 *&直接消掉了 = c = 0xc042058018
**c咋一看不知道是什么,其实可以通过换算来进行求值
**c = **&b = *b = *&a = a = 1
***&*&*&*&*&c 这个可以先消去*& **c = 1
④关于x
x = *b = *&a = a = 1
以上总结一下:
&通过变量取地址 * 通过地址取值
&a先得到地址,然后“ * xxx地址”得到该地址处变量的值,即a
*&可以抵消
以上是Go指针是什么的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!