[go] 一瞬でtype T に対するfunc(t T) とfunc(t *T)の違いを理解する #golang

[go] 一瞬でtype T に対するfunc(t T) とfunc(t *T)の違いを理解する #golang

更新: 2013年3月25日

自分が一瞬 うん?となることがあるのでメモ
一瞬は言い過ぎか。

■ code

package main

import ( “fmt” )

type T struct{ a, b int }

func (t T) addRef() { t.a++ t.b++ fmt.Printf(“t.a + t.b=%v\n”, t.a+t.b) return }

func (t *T) add() { t.a++ t.b++ fmt.Printf(“*t.a+*t.b=%v\n”, t.a+t.b) return }

func main() { var t *T = new(T) var t2 *T = new(T) t.a = 1 t2.a = 1 t.b = 2 t2.b = 2

t.add() fmt.Printf(” *T result=%v\n”, t)

t2.addRef() fmt.Printf(” T result=%v\n”, t2) }

■ result

go run main.go
*t.a+*t.b=5
*T result=&{2 3}
t.a + t.b=5
T result=&{1 2}

参照か、実体か。一度理解すれば問題無いんですけどね。

最新記事をフォロー

RSS Feed