go语言container包中的那些容器

go语言container包中的那些容器

主要内容

ListElement。前者实现了一个双向链表(以下简称链表),而后者则代表了链表中元素的结构。

ListElement都是结构体类型。结构体类型有一个特点,那就是它们的零值都会是拥有其特定结构,但没有任何定制化内容的值,相当于一个空壳


List的主要方法:

MoveBefore:给定的元素移动到另一个元素的前面

MoveAfter:给定的元素移动到另一个元素的后面

MoveToFront:把给定的元素移动到链表的最前端

MoveToBack:把给定的元素移动到链表的最后端

Front:获取链表中最前端

Back:获取链表中最后端

InsertBefore:指定的元素之前插入新元素

InsertAfter:指定的元素之后插入新元素

PushFront:用于在链表的最前端插入新元素。

PushBack:用于在链表的最前端插入新元素。


注意点

List包含的方法中,用于插入新元素的那些方法都只接受interface{}类型的值。这些方法在内部会使用Element值包装接收到的新元素。

这样做正是为了避免直接使用我们自己生成的元素,主要原因是避免链表的内部关联遭到外界破坏,这对于链表本身以及我们这些使用者来说,都是有益的。


为什么链表可以做到开箱即用?

延迟初始化,你可以理解为把初始化操作延后,仅在实际需要的时候才进行。延迟初始化的优点在于“延后”,它可以分散初始化操作带来的计算量和存储空间消耗。

List利用了自身,以及Element在结构上的特点,巧妙地平衡了延迟初始化的优缺点,使得链表可以开箱即用,并且在性能上可以达到最优。

猜你喜欢

转载自blog.csdn.net/qq_37032449/article/details/85336924