q在pop,push之后不是一个slice没听懂?
来源:4-3 扩展已有类型
qq_永远的稻米_0
2022-05-16 14:42:47
q一直是指针传递的,不是一个slice是什么意思,虽然一直在变化,但不应该也是同一个地址,同一个切片么?
1回答
切片本身是不可变类型。所以要实现push, pop,必须使用Queue([]int)的指针。
切片的实现是
一个指向底层数组的指针
len
cap
这三个字段一经生成不会改变。所以我们在切片操作时,用比如s = append(s, 3),再s后面添加一个元素3,将生成的新切片赋值给s变量。这行运行完,有可能s会变。
push和pop都会生成新的切片来描述push/pop之后的结果,所以我们要用Queue的指针作为方法的接收者。
这样我们说q.push(3),就相当于上面的例子,运行完push,q变量本身可能已经变了。
相似问题