当前位置: 首页 > 面试题库 >

Go的指针何时取消引用自己

弓温书
2023-03-14
问题内容

我最近才刚开始接触Go,我有一个主要的困惑点:我在努力理解何时确切需要显式取消引用指针。

例如,我知道.运算符将处理对指针的解引用

ptr := new(SomeStruct)
ptr.Field = "foo" //Automatically dereferences

在其他哪些情况下会这样做?例如,似乎使用数组。

ptr := new([5][5]int)
ptr[0][0] = 1

我在规范中找不到此内容,指针部分很短,甚至没有提到取消引用。对取消引用go的指针的规则进行的任何澄清都将很棒!


问题答案:

所述选择器表达式(例如x.f)这是否:

选择器会 自动取消引用 结构的 指针 。如果x是指向结构的指针,
x.y则为的简写(*x).y;如果字段y也是指向struct的指针,x.y.z则为的简写(*(*x).y).z,依此类推。如果x包含类型的匿名字段*A,其中
A也是结构类型,x.f则是的快捷方式(*x.A).f

索引操作的定义指定可以对数组指针进行索引

对于a类型A*Awhere A是数组类型,或者对于type 是Swhere S切片类型



 类似资料:
  • 本文向大家介绍C语言取消引用指针,包括了C语言取消引用指针的使用技巧和注意事项,需要的朋友参考一下 示例 要取消引用a_pointer并更改a的值,我们使用以下操作 可以使用以下打印语句对此进行验证。 但是,将一个NULL指针取消引用或其他无效指针将是错误的。这个 通常是未定义的行为。p1可能不会被取消引用,因为它指向的地址0xbad可能不是有效地址。谁知道那里有什么?它可能是操作系统内存,或另一

  • 问题内容: 我是GoLang的新手,来自Delphi C ++世界-诚然对这种语言感到非常兴奋,我认为它将成为“下一件大事”。 我正在尝试了解Go解析器和编译器如何处理指针和引用-似乎找不到任何放置一些明确规则的地方。 例如,在下面的代码示例中,返回类型和局部变量是指针类型,并且在其声明中需要使用指针符号,但是在使用时不必取消引用它们:。但是在同一代码中,输入参数被声明为指针,并且必须被取消引用才

  • 嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?

  • 此代码中可能存在空指针取消引用错误: 如何解决这些问题?

  • 问题内容: 我正在浏览位于http://tour.golang.org/的golang教程,并在示例29中进行了一些实验。 供您参考,原始示例复制到此处: 这很基本,它显示了如何创建该新结构实例。 但是,示例28显示了如何通过指向它的指针来操纵顶点,因此我对示例进行了一些修改,并对输出感到惊讶。这是修改: 并输出: 使我感到惊讶的不是{4,2},这似乎意味着更改更改了所指向的结构的实例。来自C /

  • 运行Go程序时,它会惊慌失措并返回以下信息: 我查看了其他人对相同异常的响应,但没有看到任何简单的响应(即未处理的错误)。 我在一台无法访问代码中列出的API服务器的机器上运行它,但我希望它会返回一个适当的错误(因为我试图捕捉这种错误)。