Pointers 使用变量地址的调用指针接收器方法
我正在学习指针接收器,并注意到,当我使用变量的地址调用该方法时,会得到errorPointers 使用变量地址的调用指针接收器方法,pointers,go,Pointers,Go,我正在学习指针接收器,并注意到,当我使用变量的地址调用该方法时,会得到error/prog.go:21:10:v.Scale(10)用作值 我可以只使用变量名或指针调用该方法。我试图理解为什么当我使用变量&v.Scale(10)的地址调用Go时,该方法需要顶点类型的指针时,Go会抱怨 import ( "fmt" ) type Vertex struct { X, Y float64 } func (v *Vertex) Scale(f float64) { v.X
/prog.go:21:10:v.Scale(10)用作值
我可以只使用变量名或指针调用该方法。我试图理解为什么当我使用变量&v.Scale(10)
的地址调用Go时,该方法需要顶点类型的指针时,Go会抱怨
import (
"fmt"
)
type Vertex struct {
X, Y float64
}
func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func main() {
v := Vertex{3, 4}
var p *Vertex
p=&v
v.Scale(10) //This works
p.Scale(10) //This works
&v.Scale(10) // This does not work
fmt.Println(v)
}
声明
&v.Scale(10)
相当于
&(v.Scale(10))
编译器抱怨,因为v.Scale(10)
被用作值
改用这个:
(&v).Scale(10)
在操场上跑步: