1. 程式人生 > >go語言container包中的那些容器

go語言container包中的那些容器

go語言container包中的那些容器

主要內容

ListElement。前者實現了一個雙向連結串列(以下簡稱連結串列),而後者則代表了連結串列中元素的結構。

ListElement都是結構體型別。結構體型別有一個特點,那就是它們的零值都會是擁有其特定結構,但沒有任何定製化內容的值,相當於一個空殼


List的主要方法:

MoveBefore:給定的元素移動到另一個元素的前面

MoveAfter:給定的元素移動到另一個元素的後面

MoveToFront:把給定的元素移動到連結串列的最前端

MoveToBack:把給定的元素移動到連結串列的最後端

Front:獲取連結串列中最前端

Back:獲取連結串列中最後端

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

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

PushFront:用於在連結串列的最前端插入新元素。

PushBack:用於在連結串列的最前端插入新元素。


注意點

List包含的方法中,用於插入新元素的那些方法都只接受interface{}型別的值。這些方法在內部會使用Element值包裝接收到的新元素。

這樣做正是為了避免直接使用我們自己生成的元素,主要原因是避免連結串列的內部關聯遭到外界破壞,這對於連結串列本身以及我們這些使用者來說,都是有益的。


為什麼連結串列可以做到開箱即用?

延遲初始化,你可以理解為把初始化操作延後,僅在實際需要的時候才進行。延遲初始化的優點在於“延後”,它可以分散初始化操作帶來的計算量和儲存空間消耗。

List利用了自身,以及Element在結構上的特點,巧妙地平衡了延遲初始化的優缺點,使得連結串列可以開箱即用,並且在效能上可以達到最優。