求助:这段代码封装到函数中为什么结果不一样了呢?

testmtbf · · 959 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

各位: 正初学Go中的链表,其中一段代码写在main中是这样的: func main() { // var head Student head.Name="hua" head.Age=18 head.Score=99.5 var p *Student p=&head //头部插入10个 for i:=0; i<10; i++{ stu:=Student{ Name: fmt.Sprintf("stu%d",i), Age: rand.Intn(100), Score: rand.Float32()*100, } stu.Next=p p=&stu } //显示 for p !=nil{ fmt.Println(*p) p=p.Next } } 这段代码的输出是: {stu9 37 21.855305 0xc000058420} {stu8 11 29.310184 0xc0000583f0} {stu7 28 46.888985 0xc0000583c0} {stu6 62 38.06572 0xc000058390} {stu5 94 81.36399 0xc000058360} {stu4 56 30.091187 0xc000058330} {stu3 25 15.651925 0xc000058300} {stu2 81 68.682304 0xc0000582d0} {stu1 47 43.77142 0xc0000582a0} {stu0 81 94.05091 0xc000058270} {hua 18 99.5 <nil>} 可是,当我把 “头部插入10个” 这部分代码封装到一个函数中,执行的结果就只有 {hua 18 99.5 <nil>} 尝试过函数内部显示,是没问题的。那我除了把函数内部修改过的指针p return出来,还有什么办法能直接修改p的值吗?

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

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

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