Golang中container/list的坑
最近用到了标准库中的container/list包实现一个双端队列,当准备清空deque的时候我是这么写的:
结果却只删除了deque中首个元素。我看了一下list的源码,发现整个实现十分简陋,去掉注释总共才100多行。
节点的定义只有前后指针、存储的值和所属的list,很标准的双向链表,再看一下remove方法:
问题就出在第四行,为了避免内存泄漏,next指针被释放了,那么可以用临时变量代替一下:
如果只是清空list,更推荐的做法是使用Init()