Golang的container/list包提供内置双向链表,无需手动实现节点和操作。导入"container/list"后,可用list.New()创建链表,支持PushFront/PushBack添加元素,Front()+Next()遍历,Remove删除元素,Value修改值,还提供Len、MoveToFront等方法,方便高效地进行链表操作。

在Golang中,container/list 包提供了一个内置的双向链表实现,无需手动定义节点结构或编写插入、删除逻辑。它可以直接存储任意类型的值(interface{}),使用起来非常方便。
1. 导入包并初始化链表
要使用 container/list,先导入标准库中的包:
import "container/list"创建一个空的双向链表:
l := list.New()你也可以直接声明变量:
立即学习“go语言免费学习笔记(深入)”;
var l = new(list.List)2. 添加元素到链表
list 提供了多种方式在头部或尾部插入元素:
- PushFront(v interface{}):在链表前端插入元素
- PushBack(v interface{}):在链表末尾插入元素
示例:
一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!
l.PushBack(1)
l.PushBack("hello")
l.PushFront(0)
此时链表顺序为:0 → 1 → "hello"
3. 遍历链表
通过 Front() 获取头节点,然后使用 Next() 向后遍历:
for e := l.Front(); e != nil; e = e.Next() {fmt.Println(e.Value)
}
每个元素是 *list.Element 类型,Value 字段保存实际值。
4. 删除和修改元素
删除某个元素使用 Remove(element *Element) 方法:
e := l.Front()l.Remove(e) // 删除第一个元素
修改元素值可以直接赋值给 Value 字段:
e.Value = "new value"5. 其他常用操作
- Len():返回链表长度
- MoveToFront(e *Element):将元素移到队首
- InsertBefore(v, mark *Element):在指定位置前插入
- Init():清空链表,可用于重用
基本上就这些。container/list 虽然不如手写链表灵活,但对于大多数场景已经足够,且避免了重复造轮子。









