В настоящее время я участвую в программировании на языке Go. У меня возникают некоторые трудности с пониманием указателей Go (и мой C/С++ уже далеко...). Например, в Tour of Go # 52 (http://tour.golang.org/#52) я читал:
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())
}
Но если вместо
func (v *Vertex) Abs() float64 {
[...]
v := &Vertex{3, 4}
Я написал:
func (v Vertex) Abs() float64 {
[...]
v := Vertex{3, 4}
Или даже:
func (v Vertex) Abs() float64 {
[...]
v := &Vertex{3, 4}
и наоборот:
func (v *Vertex) Abs() float64 {
[...]
v := Vertex{3, 4}
Я получил тот же результат. Есть ли разница (память и т.д.)?