问答 / 0 / 3 / 创建于 5年前 / 更新于 5年前
package main import ( "fmt" ) type aw struct { ww int } func main() { a := aw{} change(&a) fmt.Println("a:", a) } func change(x *aw) { x = &aw{ww: 100} /*a始终为0*/ fmt.Println(x) // x.ww = 100 //成功修改 } //为什么 x.ww=100能够成功修改 而x=&aw{ww:100}却无法实现呢? Copy
package main import ( "fmt" ) type aw struct { ww int } func main() { a := aw{} change(&a) fmt.Println("a:", a) } func change(x *aw) { x = &aw{ww: 100} /*a始终为0*/ fmt.Println(x) // x.ww = 100 //成功修改 } //为什么 x.ww=100能够成功修改 而x=&aw{ww:100}却无法实现呢?
请参考:new《Go 简易教程》
&aw {} 是创建了一个新的 struct
因为 x 是 change 函数的参数,相当于是函数内部的局部变量,不管在函数内部怎么修改,都不会影响 main 函数中的 a。
x
change
main
a
aw
我要举报该,理由是:
推荐文章: