作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之使用映射|Go主题月
- 映射的使用
- 映射的定义
- 映射中添加元素
- 映射中删除元素
- 遍历map的“键值对”
本篇内容将继续带领大家走进Go语言的世界。
1.本文简介
Go语言学习之列表的使用
2.列表的定义
列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间关系。列表有多种实现方法,如单链表、双链表。
3.列表的声明方式
list的初始化有两种方法
New和声明。
两种方法的初始化效果都是一样的。
1.通过New的方法初始化list
变量名:=list.New()
2.通过声明初始化list
var 变量名 list.list
列表与切片和map不同的是,列表没有具体元素类型的限制。因此列表的元素可以是任意类型。
4.在列表中插入元素
下面的代码展示如何给list添加元素:
package main
import (
"container/list"
"fmt"
)
func main(){
newlist:=list.New()
newlist.PushBack("Second")
newlist.PushFront("First")
var node=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("列表的第%v个元素为:%v\n",node,i.Value)
node++
}
}
输出为:
列表插入元素的方法有以下4种
方法 | 功能 |
---|---|
list.InsertAfter(”word”,mark) | 在mark点之后插入元素word |
list.InsertBefore(”word”,mark) | 在mark点之前插入元素word |
list.PushFront(”word”) | 将元素word插入到列表头部 |
list.PushBack(”word”) | 将元素word插入到列表尾部 |
具体使用如下面代码所示:
package main
import (
"container/list"
"fmt"
)
func main(){
newlist:=list.New()
newlist.PushFront("First")
mark:=newlist.PushBack("Second")
var node=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("旧列表的第%v个元素为:%v\n",node,i.Value)
node++
}
newlist.InsertAfter("World",mark)
newlist.InsertBefore("Hello",mark)
var node2=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("新列表的第%v个元素为:%v\n",node2,i.Value)
node2++
}
}
输出为:
5.在列表中删除元素
我们利用remove方法
可以实现列表中元素的删除
具体如下面的代码所示:
package main
import (
"container/list"
"fmt"
)
func main(){
newlist:=list.New()
newlist.PushFront("First")
mark:=newlist.PushBack("Second")
var node=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("旧列表的第%v个元素为:%v\n",node,i.Value)
node++
}
newlist.InsertAfter("World",mark)
newlist.InsertBefore("Hello",mark)
var node2=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("新列表的第%v个元素为:%v\n",node2,i.Value)
node2++
}
newlist.Remove(mark)
var node3=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("删除元素后列表的第%v个元素为:%v\n",node2,i.Value)
node3++
}
}
输出为:
6.遍历列表-访问列表的每一个元素
遍历列表时候可以利用Front函数
获取头元素,遍历时只要元素不为空,就可以继续前进。每次遍历了后调用元素的Next
,即可获取到下一个元素。
具体代码如下:
package main
import (
"container/list"
"fmt"
)
func main(){
newlist:=list.New()
newlist.PushFront("First")
newlist.PushBack("Second")
var node=1
for i:=newlist.Front();i!=nil;i=i.Next(){
fmt.Printf("列表的第%v个元素为:%v\n",node,i.Value)
node++
}
}
输出为:
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。