-1
私はこの行くコード突然変異が起こるたびに新しいオブジェクト?
package main
import (
"fmt"
)
type User struct {
Name string
Sex string
}
func main() {
u := &User{Name: "Leto", Sex: "Male"}
fmt.Printf("main() address: %p %p\n", &u, &u.Name)
Modify(u)
Modify(u)
Modify2(u)
Modify2(u)
}
func Modify(u *User) {
u.Name = "Paul11"
fmt.Printf("Modify() address: %p %p\n", &u, &u.Name)
}
func Modify2(u *User) {
u.Name = "Leto"
fmt.Printf("Modify() address: %p %p\n", &u, &u.Name)
}
を持っている出力は、変異後のオブジェクトのアドレスが異なっているなぜ私は 1.だろ
main() address: 0x1040a120 0x10434120
Modify() address: 0x1040a130 0x10434120
Modify() address: 0x1040a138 0x10434120
Modify() address: 0x1040a140 0x10434120
Modify() address: 0x1040a148 0x10434120
です。 2.なぜ最初のものが16バイトをとり、それ以降はわずか8バイトです。 3.なぜ突然変異したフィールドが同じメモリアドレスを使用しているのですか?
ありがとうございます!