list 的初始化有两种方法:
- 分别是使用 New() 函数
- 使用var 关键字声明
两种方法的初始化效果都是一致的。
- 通过 container/list 包的 New() 函数初始化 list
变量名 := list.New()
- 通过 var 关键字声明初始化 list
var 变量名 list.List
列表与切片和map 不同之处
- 列表并没有具体元素类型的限制,因此,列表的元素可以是任意类型,这既带来了便利,也引来一些问题,例如给列表中放入了一个 interface{} 类型的值,取出值后,如果要将 interface{} 转换为其他类型将会发生宕机。
双链表支持从队列前方或后方插入元素,分别对应的方法是 PushFront 和 PushBack。
这两个方法都会返回一个 *list.Element 结构,如果在以后的使用中需要删除插入的元素,则只能通过 *list.Element 配合 Remove() 方法进行删除,这种方法可以让删除更加效率化,同时也是双链表特性之一。
1、添加元素
myList := list.New()
myList.PushBack("aaaaaaaa")
myList.PushFront("bbbbbbbb")
// 尾部添加后保存元素句柄
element := myList.PushBack("ccccccccccc")
// 在fist之后添加high
myList.InsertAfter("high", element)
// 在fist之前添加noon
myList.InsertBefore("noon", element)
// 删除元素
myList.Remove(element)
遍历列表,访问列表的每一个元素
myList := list.New()
//在list里添加数据
myList.PushFront("aaaaa")
myList.PushBack("bbbbb")
//列表遍历
for i := myList.Front(); i != nil; i = i.Next() {
fmt.Println(i.Value)
}



