使用指针接收者有两个原因。
第一,方法可以修改其接收者所指向的值。
第二,可以避免每次调用方法时都复制该值。 例如,如果接收者是一个大型结构体,这样做可能会更高效。
在这个例子中, Scale 和 Abs 都是接收者类型为 *Vertex 的方法, 尽管 Abs 方法并不需要修改其接收者。
Scale
Abs
*Vertex
一般来说,一个给定类型的所有方法应该统一使用值接收者或指针接收者, 而不应混合使用两者。 (接下来的几页会说明原因。)