猿问

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

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

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

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

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

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

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


江户川乱折腾
浏览 231回答 1
1回答

郎朗坤

所述选择器表达式(例如x.f)这是否:选择器会自动取消对结构的指针的引用。如果x是指向结构的指针, x.y则为(*x).y;的缩写。如果字段y也是指向struct的指针,x.y.z则为的简写(*(*x).y).z,依此类推。如果x包含type的匿名字段*A,其中 A也是struct类型,x.f则是的快捷方式(*x.A).f。索引操作的定义指定可以对数组指针进行索引:对于a类型A或*AwhereA是数组类型,或者对于a类型SwhereS是切片类型
随时随地看视频慕课网APP

相关分类

Go
我要回答