Go语言指针用法详解

 更新时间:2022年07月12日 14:27:02   作者:奋斗的大橙子  
Go指针和C指针在许多方面非常相似,但其中也有一些不同。本文详细讲解了Go语言指针的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

结合这个例子分析一下

结果:

结合以往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语言指针的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Go中Goroutines轻量级并发的特性及效率探究

    Go中Goroutines轻量级并发的特性及效率探究

    这篇文章主要为大家介绍了Go中Goroutines轻量级并发的特性及效率探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 如何使用腾讯云go sdk 查询对象存储中最新文件

    如何使用腾讯云go sdk 查询对象存储中最新文件

    这篇文章主要介绍了使用腾讯云go sdk 查询对象存储中最新文件,这包括如何创建COS客户端,如何逐页检索对象列表,并如何对结果排序以找到最后更新的对象,我们还展示了如何优化用户体验,通过实时进度更新和检索多个文件来改进程序,需要的朋友可以参考下
    2024-03-03
  • Golang中使用errors返回调用堆栈信息

    Golang中使用errors返回调用堆栈信息

    这篇文章给大家介绍了Golang中如何使用errors返回调用堆栈信息,文章通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • go variant底层原理深入解析

    go variant底层原理深入解析

    这篇文章主要为大家介绍了go variant底层原理深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • windows下使用GoLand生成proto文件的方法步骤

    windows下使用GoLand生成proto文件的方法步骤

    本文主要介绍了windows下使用GoLand生成proto文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 一文精通管理多版本Go安装教程

    一文精通管理多版本Go安装教程

    这篇文章主要为大家介绍了一文精通管理多版本Go安装教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • go语言单元测试基准测试及表驱动测试示例详解

    go语言单元测试基准测试及表驱动测试示例详解

    这篇文章主要为大家介绍了go语言单元测试基准测试及表驱动测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • golang中常见的logrus日志库

    golang中常见的logrus日志库

    这篇文章主要介绍了golang中常见的logrus日志库的相关资料,需要的朋友可以参考下
    2023-05-05
  • 在Golang中读写CSV文件的操作指南

    在Golang中读写CSV文件的操作指南

    CSV(逗号分隔值)文件是一种常见的数据存储格式,广泛应用于数据导入、导出、分析和交换等场景,在Golang中,有许多库和工具可以帮助我们读取和写入CSV文件,使数据处理变得简单而高效,本文将深入探讨如何在Golang中使用标准库以及第三方库来读写CSV文件
    2023-11-11
  • Go使用TimerController解决timer过多的问题

    Go使用TimerController解决timer过多的问题

    多路复用,实际上Go底层也是一种多路复用的思想去实现的timer,但是它是底层的timer,我们需要解决的问题就过多的timer问题!本文给大家介绍了Go使用TimerController解决timer过多的问题,需要的朋友可以参考下
    2024-12-12

最新评论