メソッドレシーバの型指定

http://go-tour-jp.appspot.com/#50 にて

type Vertex struct {
    X, Y float64
}

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.Abs())
    
    v1 := Vertex{3, 4}
    fmt.Println(v1.Abs())
}

どちらも動くみたい。 Absメソッドを func (v Vertex) Abs() としても変わらない。この辺の扱いがまだ良くわからない。自分の好きな方で書いて構わないのだろうか。

[追記] #52に書いてることはだいたい理解できる。構造体に対してはポインタで、基本型の派生に対しては値型で宣言しておくとコード読みやすくなるかも。

[追記] と思ったら #53でまた分からなくなった