4-3 Queue 是切片类型 不用加指针就可以修改它的值吧

来源:4-3 扩展已有类型

rockLei

2019-05-16

写回答

1回答

ccmouse

2019-05-26

不完全是这样。我们看:

func (q *Queue) Push(v int) {

    *q = append(*q, v)

}

关键在于append会返回一个新的slice。q本身的值(到底是哪个切片)会在append之后改变。

不用指针我们可以改变q[0], q[1]等,但是q本身是哪个slice还是需要使用指针才能接收。

1
3
ccmouse
回复
五栋一哥
是的。不用指针我们可以改变q[0], q[1]等。 但是append不一样。append的用法是: newSlice = append(oldSlice, v) append有可能会造成数据的重新分配。这句话运行后,oldSlice仍然没有v,但是newSlice才有v。 再结合你说的slice传递的时候也是对他进行拷贝的值传递,所以这里需要加*
2020-02-13
共3条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程