指针运算符->用于golang

Qia*_*hen 1 pointers go operator-keyword

似乎golang没有C和C ++拥有的指针运算符->。现在让我们说我有一个类似如下的函数:myfun(myparam * MyType),在函数内部,如果要访问MyType的成员变量,则必须执行(* myparam).MyMemberVariable。在C和C ++中执行myparam-> MyMemberVariable似乎容易得多。

我很新。不确定我是否缺少某些东西,否则这不是正确的方法吗?

谢谢。

Pau*_*kin 7

在Go中,->.都由表示.

编译器知道类型,并且可以在必要时取消引用。

package main

import "fmt"

type A struct {
    X int
}

func main() {
    a0, a1 := A{42}, &A{27}
    fmt.Println(a0.X, a1.X)
}
Run Code Online (Sandbox Code Playgroud)

  • 也许澄清您的想法,然后问第二个问题? (3认同)

Arj*_*jan 5

你可以这样做myparam.MyMemberValue,指针会自动取消引用

去规格

选择器自动取消对结构体指针的引用。如果x是指向结构体的指针,则xy是( x).y的简写;如果字段 y 也是指向结构体的指针,则 xyz 是 ( (*x).y).z 的简写,依此类推。如果 x 包含 *A 类型的匿名字段,其中 A 也是结构类型,则 xf 是 (*xA).f 的简写。