Я изучаю приемник указателя и замечаю, что когда я вызываю метод, используя адрес переменной, я получаю ошибку ./prog.go:21:10: v.Scale(10) used as value
Я могу вызвать метод, используя только имя переменной или используя указатель. Я пытаюсь понять, почему Go жалуется, когда я вызываю, используя адрес переменной &v.Scale(10)
, когда метод ожидает указатель Vertex
типа
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)
}