你可以声明使用指针接收者的方法。
这意味着接收者类型使用字面语法 *T,其中 T 是某个类型。 (另外, T 本身不能是像 *int 这样的指针。)
*T
T
*int
例如,这里的 Scale 方法定义在 *Vertex 上。
Scale
*Vertex
使用指针接收者的方法可以修改接收者所指向的值 (这里的 Scale 就是如此)。 由于方法经常需要修改其接收者,因此指针接收者比值接收者更常见。
试着删除 *,也就是第 16 行 Scale 函数声明中的星号, 然后观察程序的行为如何变化。
*
使用值接收者时, Scale 方法操作的是原始 Vertex 值的副本。 (这与其他任何函数参数的行为相同。) Scale 方法必须使用指针接收者,才能修改 Vertex 值; 这个值声明在 main 函数中。
Vertex
main