go语言container包中的那些容器

go语言container包中的那些容器

主要内容

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

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


List的主要方法:

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

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

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

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

Front:获取链表中最前端

Back:获取链表中最后端

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

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

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

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


注意点

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

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


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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容