假设我已经定义了这个结构:
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()结构体实例时程序不吐出错误呢?
相关分类