GO语言中container/list使用详解-创新互联

go中container中list的使用详解

1. func New() *List{}

初始化一个列表,返回类型为一个list对象
a := list.New() # 在函数内部
a = list.New()

输出:
&{{0xc00006a300 0xc00006a300  } 0}

2. func (l List) Back()Element{}

返回链表的最后一个元素,返回类型元列表中的元素。
x := a.Back()
fmt.Println(strings.Repeat("-----------", 10))
fmt.Println(x)

&{0xc00006a300 0xc00006a330 0xc00006a300 b}

3. func (l List) Front()Element{}

返回链表的第一个元素,返回类型元列表中的元素。
x := a.Front()
fmt.Println(strings.Repeat("-----------", 10))
fmt.Println(x)
&{0xc00006a360 0xc00006a300 0xc00006a300 a}

4. func (l List) Init()List{}

初始化此链表,将元素全部清空
m := a.Init()
fmt.Println(m)
输出:
&{{0xc00006a300 0xc00006a300  } 0}

5. func (l List) InsertAfter(v interface{}, markElement) *Element{}

InsertAfter在mark之后立即插入一个值为v的新元素e并返回e。如果mark不是l的元素,则不修改列表。商标不得为零。
b := a.PushBack("b")
fmt.Println(a.InsertAfter("mm", b))
fmt.Println(a)

&{0xc000068300 0xc000068360 0xc000068300 mm}
&{{0xc000068300 0xc000068480  } 1}

6. func (l List) InsertBefore(v interface{}, markElement) *Element{}

b := a.PushBack("b")
fmt.Println(a.InsertBefore("mm", b))
fmt.Println(a)

&{0xc000068300 0xc000068360 0xc000068300 mm}
&{{0xc000068300 0xc000068480  } 1}

7. func (l *List) Len() int{}

返回链表的长度,返回值类型为×××
fmt.Println(a.Len())

1

8. func (l List) MoveAfter(e, markElement){}

MoveAfter将标记后的元素e移动到新位置。如果e或mark不是l或e == mark的元素,则不修改列表。元素和标记不得为零。

9. func (l List) MoveBefore(e, markElement){}

MoveBefore将元素e移动到标记前的新位置。如果e或mark不是l或e == mark的元素,则不修改列表。元素和标记不得为零。

10. func (l List) MoveToBack(eElement){}

MoveToBack将元素e移动到列表l的后面。如果e不是l的元素,则不修改列表。元素不能为零。

11. func (l List) MoveToFront(eElement){}

MoveToFront将元素e移动到列表l的前面。如果e不是l的元素,则不修改列表。元素不能为零。

12. func (l List) PushBack(v interface{})Element{}

PushBack在列表l的后面插入一个值为v的新元素e并返回e。
a.PushBack("a")
b := a.PushBack("b")

13. func (l List) PushBackList(otherList){}

PushBackList在列表l的后面插入另一个列表的副本。列表l和其他可以是相同的。他们一定不能为零。

14. func (l List) PushFront(v interface{})Element{}

PushFront在列表l的前面插入一个值为v的新元素e并返回e。

15. func (l List) PushFrontList(otherList){}

PushFrontList在列表l的前面插入另一个列表的副本。列表l和其他可以是相同的。他们一定不能为零。

16. func (l List) Remove(eElement) interface{}{}

如果e是列表l的元素,则删除从l中删除e。它返回元素值e.Value。元素不能为零。

17. func (e Element) Next()Element{}

Next返回下一个list元素或nil

18. func (e Element) Prev()Element{}

Prev返回前一个列表元素或nil。

19 取出链表中元素的值

x := a.Front()
fmt.Println(x.Value)

20 链表的遍历

for e := a.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }
输出:
3
a
b
mm

对于链表与切片的总结。

链表适合于频繁存取的数据结构中。
切片适合于频繁查询的数据结构中。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名网站空间、营销软件、网站建设、新宁网站维护、网站推广。
文章名称:GO语言中container/list使用详解-创新互联
文章来源:http://myzitong.com/article/ddejdc.html