指针重定向
而以指针为接收者的方法被调用时,接收者既能为值又能为指针:
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语言中的->
运算符