I think I understand what pointer is but I don't quite understand when to use it.  

The below snippet is from ["A Tour of Go"](http://go-tour-jp.appspot.com/#50).  

What is the purpose of "\*Vertex" and "&Vertex"?   

I replaced them with "Vertex" and it run fine.  

```
package main

import (
    "fmt"
    "math"
)

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())
}

```