猿问

通过结构指针定义结构

我不明白为什么在sp用结构指针 ( &s)定义结构 ( )后,初始结构 ( 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 ???


吃鸡游戏
浏览 170回答 1
1回答

潇湘沐

你有一个对象s。和一个指向sp该点到s。因此,当您设置agethrough 时sp,您实际上是在修改s.记住,sp不是一个单独的对象。这就像一个别名。
随时随地看视频慕课网APP

相关分类

Go
我要回答