Go语言学习之列表的使用|Go主题月

224 阅读3分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了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++
      }
   }

输出为:

image.png

列表插入元素的方法有以下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++
      }
      
   }

输出为:

image.png

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++
   }
   
   }

输出为:

image.png

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++
      }

   }

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。