有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
main方法中,a.append执行之后, fmt正常应该输出append添加进去的内容 但是执行之后发现append的赋值没有成功
go 的传值方式,this=a 是改变不了外面的a 的,试试 this.val=a.val
this.val 赋值
<nil>
nil
this.val
1. 应该分清什么是值传递和引用传递。go里都是值传递。 2. func的receiver也是值传递。 3. 图中代码执行完毕后,结果为``。原因是append的receiver把main中的a的值拷贝了一下,所以append中的this的值为`nil`。 4. append中的参数a的值确实赋值给了this,但main中的a并不是append中的this,所以main中的fmt还是输出了`nil`值的a。 根本原因在于:main中的a不是this。
正解,我输出了一下地址,main中a的地址的确和append的this地址不一样,
值传递和引用传递
`单行代码`
main方法中,a.append执行之后, fmt正常应该输出append添加进去的内容 但是执行之后发现append的赋值没有成功
go 的传值方式,this=a 是改变不了外面的a 的,试试 this.val=a.val
this.val 赋值
<nil>
。原因是append的receiver把main中的a的值拷贝了一下,所以append中的this的值为nil
。nil
值的a。 根本原因在于:main中的a不是this。nil
,this.val
这么调用会pacin。正解,我输出了一下地址,main中a的地址的确和append的this地址不一样,
值传递和引用传递