sp
struct ( ) を struct ポインター ( &s
) で定義した後、最初の struct ( s
) が変更され続け、後者 ( ) が変更される理由がわかりませんsp
。
http://play.golang.org/p/TdcL_QJqfB
type person struct {
name string
age int
}
func main() {
s := person{name: "Sean", age: 50}
fmt.Printf("%p : %g\n", &s, s.age)
sp := &s
fmt.Printf("%p : %g\n", &sp, sp.age)
sp.age = 51
fmt.Printf("%p : %g\n", &sp, sp.age) // yield 51
fmt.Printf("%p : %g\n", &s, s.age) // yields 51, but why not 50 ???
}
出力:
0xc0100360a0 : %!g(int=50)
0xc010000000 : %!g(int=50)
0xc010000000 : %!g(int=51)
0xc0100360a0 : %!g(int=51) // why not 50 ???
私は C ファミリー言語、Go、およびポインターを初めて使用するので、正しい概念またはエラーへのポインター (:)) は非常に親切です。前もって感謝します !