各位:
正初学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的值吗?