Go中,列表使用container/list包来实现,内部是双链表
声明方法: 1 通过container/list包的New方法初始list
变量名 := list.New()
复制代码
2 通过声明初始化list
var 变量名 list.List
复制代码
列表没有元素限制,可以是任意类型。 前方插入元素:PushFront 后方插入元素:PushBack 这两种方法都会返回一个list.Element结构,如果在以后的使用中需要删除插入的元素,只需要通过list.Element配合Remove()方法进行删除,可以让删除更加效率化。
添加元素示例:
l := list.New()
l.PushBack("fist")
l.PushFront(67)
复制代码
列表插入元素的方法如下表所示。
| 方法 | 功能 |
|---|---|
| InsertAfter(v interface(),mark *Element) *Element | 在mark之后插入,mark由其他函数提供 |
| InsertBefore(v interface(),mark *Element) *Element | 在mark之前插入,mark由其他函数提供 |
| PushBackList(other *List) | 添加other列表元素到尾部 |
| PushFrontList(other *List) | 添加other列表元素到头部 |
从列表中删除元素:列表的插入函数返回值会提供一个*list.Element结构,这个结构记录着列表元素的值及其他节点之间的关系等信息,从列表中删除元素时,需要用到这个结构进行快速删除。
import "container/list"
func mian(){
l := list.new()
//尾部添加
l.PushBack("canon")
//头部添加
l.PushFront(67)
//尾部添加后保存元素句柄
element := l.PushBack("fist")
//在fist之后添加high
l.InterAfter("high",element)
//在fist之前添加noon
l.InterBefore("noon",element)
//使用element删除指定元素
l.Remove(element)