私は現在、Go言語でプログラミングすることを学んでいます。Goポインタを理解するのにいくつかの問題があります(そして私のC / 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}
まったく同じ結果が得られました。違いはありますか(メモリに関してなど)?