关于链表和指针的一些疑问

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

##### 定义一个结构体 ``` go type Student struct { Name string Age int Score float32 next *Student } ``` ##### 定义一个打印链表的函数,如下: ``` go func trans(p *Student){ for p != nil { fmt.Println(*p) p = p.next } } ``` 我打算在链表头部插入新的结构体, ``` go //头部插入 func inertHead(head *Student){ for i := 0; i < 10; i++ { stu := Student{ Name: "stu" + strconv.Itoa(i), Age: rand.Intn(100), Score: rand.Float32() * 100, } stu.next = head head = &stu } } ``` 最后在入口函数`main`中调用这些函数 ```go func main(){ var head *Student = &Student{} //分配指针内存 head.Name = "Tom" head.Age = 18 head.Score = 80 // 插入新的结构体 insertHead(head) // 打印新的链表 trans(head) } ``` 我传入的已经是指针了,应该是引用类型传递了吧?本以为会打印11个结构体组成的链表,但是结果只打印了`{Tom,18,80,nil}` 大神们,这个该怎么改呢?其中的原理又是什么?

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

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

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