目标:什么是List链表
什么是List双向链表
Go语言的标准库中包含一个container/list
包,这个包实现了双向链表。你可以使用这个包来创建和操作链表。
list查询效率较慢,但是不需要扩容
简单使用
// 案例
package main
import (
"container/list"
"fmt"
)
func main() {
var myList list.List
fmt.Println(myList) // 返回结果:{{ } 0}
myList.PushBack("go")
myList.PushBack("grpc")
myList.PushBack("mysql")
fmt.Println(myList) // 返回结果:{{0x140000741e0 0x14000074240 } 3}
// 如果打印实际的值,需要遍历打印
// 正序遍历
for i := myList.Front(); i != nil; i = i.Next() {
fmt.Println(i.Value)
}
// 返回结果
// go
// grpc
// mysql
fmt.Println("---------")
// 反向遍历
for i := myList.Back(); i != nil; i = i.Prev() {
fmt.Println(i.Value)
}
// 返回结果
// mysql
// grpc
// go
}
List中插入一个数据
// 案例
package main
import (
"container/list"
"fmt"
)
func main() {
var myList list.List
fmt.Println(myList) // 返回结果:{{ } 0}
myList.PushBack("go")
myList.PushBack("grpc")
myList.PushBack("mysql")
// list中某个地方插入一个新的数据
i := myList.Front()
for ; i != nil; i = i.Next() {
if i.Value.(string) == "grpc" {
break
}
}
myList.InsertBefore("gin", i)
for i := myList.Front(); i != nil; i = i.Next() {
fmt.Println(i.Value)
}
// 返回结果:
//go
//gin
//grpc
//mysql
}
Comments NOTHING