package main
import (
"fmt"
"math"
)
type Vertex struct {
X, Y float64
}
func (v Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func (v Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := &Vertex{3, 4}
fmt.Println(v.X)
fmt.Println(v.Abs())
}
这是我的代码:
对于v := &Vertex{3, 4}
,v
是一个指向Vertex{3, 4}
的指针,
但我发现fmt.Println(v.X)
或v := Vertex{3, 4}
可以v := &Vertex{3, 4}
,
对于用于func (v Vertex) Abs() float64
类型的函数Vertex
,但使用* Vertex
类型调用它也是正常的。
是什么原因?