猿问

指向结构的指针(或缺少结构)

假设我已经定义了这个结构:


type Vertex struct {

    X, Y float64

}

现在它是完全合法的,像这样使用它:


func (v *Vertex) Abs() float64 {

    return math.Sqrt(v.X*v.X + v.Y*v.Y)

}


func main() {

    v := &Vertex{3, 4}

    fmt.Println(v.Abs())

}

但不使用指针也可以:


func main() {

    v := Vertex{3, 4}

    fmt.Println(v.Abs())

}

两种情况下的结果是相同的,但它们在内部有何不同?使用指针是否会使程序运行得更快?


附注。我知道该Abs()函数需要一个指针作为接收器。这解释了为什么稍后在 main 函数中使用指针的原因。但是为什么当我不使用指针直接调用Abs()结构体实例时程序不吐出错误呢?


汪汪一只猫
浏览 150回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答