在Go语言中,列表使用 container/list 包来实现,内部的实现原理是双链表,列表能够高效地进行任意位置的元素插入和删除操作。 初始化列表 list 的初始化有两种方法:分别是使用 New() 函数和 var 关键字声明,两种方法的初始化效果都是一致的。
- 通过 container/list 包的 New() 函数初始化 list
变量名 := list.New() - 通过 var 关键字声明初始化 list
var 变量名 list.List 列表与切片和 map 不同的是,列表并没有具体元素类型的限制,因此,列表的元素可以是任意类型,这既带来了便利,也引来一些问题,例如给列表中放入了一个 interface{} 类型的值,取出值后,如果要将 interface{} 转换为其他类型将会发生宕机。
package grammarTest
import (
"container/list"
"fmt"
)
func ListTest() {
l:=list.New()
var ll list.List
l.PushFront(33)
el:=l.PushBack("test")
el1:=l.InsertBefore("zzz",el)
l.InsertAfter("sss",el1)
l.Remove(el1)
ll.PushBackList(l)
for i:=ll.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}
}
|