跪求大神看一下我这段代码有什么问题

784314557 · 2018-06-25 21:15:32 · 906 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-06-25 21:15:32 的主题,其中的信息可能已经有所发展或是发生改变。

QQ截图20180625211932.png


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

906 次点击  
加入收藏 微博
7 回复  |  直到 2018-06-26 14:43:59
784314557
784314557 · #1 · 7年之前

main方法中,a.append执行之后, fmt正常应该输出append添加进去的内容 但是执行之后发现append的赋值没有成功

mlkr
mlkr · #2 · 7年之前

go 的传值方式,this=a 是改变不了外面的a 的,试试 this.val=a.val

hellogophp
hellogophp · #3 · 7年之前

this.val 赋值

jdxj
jdxj · #4 · 7年之前
  1. 应该分清什么是值传递和引用传递。go里都是值传递。
  2. func的receiver也是值传递。
  3. 图中代码执行完毕后,结果为<nil>。原因是append的receiver把main中的a的值拷贝了一下,所以append中的this的值为nil
  4. append中的参数a的值确实赋值给了this,但main中的a并不是append中的this,所以main中的fmt还是输出了nil值的a。 根本原因在于:main中的a不是this。
jdxj
jdxj · #5 · 7年之前
hellogophphellogophp #3 回复

this.val 赋值

  1. 由于this的值是nilthis.val 这么调用会pacin。
784314557
784314557 · #6 · 7年之前
jdxjjdxj #4 回复

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地址不一样,

yyl719133368
yyl719133368 · #7 · 7年之前

值传递和引用传递

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传