指针重定向
而以指针为接收者的方法被调用时,接收者既能为值又能为指针:
1 | var v Vertex |
对于语句 v.Scale(5),即便 v 是个值而非指针,带指针接收者的方法也能被直接调用。 也就是说,由于 Scale 方法有一个指针接收者,为方便起见,Go 会将语句 v.Scale(5) 解释为 (&v).Scale(5)。
而以值为接收者的方法被调用时,接收者既能为值又能为指针:
1 | var v Vertex |
这种情况下,方法调用 p.Abs() 会被解释为 (*p).Abs()。
亦即:.运算符会自动添加前面的&符号,如同c语言中的->运算符