go語言container包中的那些容器
阿新 • • 發佈:2018-12-29
go語言container包中的那些容器
主要內容
List
和Element
。前者實現了一個雙向連結串列(以下簡稱連結串列),而後者則代表了連結串列中元素的結構。
List
和Element
都是結構體型別。結構體型別有一個特點,那就是它們的零值都會是擁有其特定結構,但沒有任何定製化內容的值,相當於一個空殼
List的主要方法:
MoveBefore
:給定的元素移動到另一個元素的前面
MoveAfter
:給定的元素移動到另一個元素的後面
MoveToFront
:把給定的元素移動到連結串列的最前端
MoveToBack
:把給定的元素移動到連結串列的最後端
Front
:獲取連結串列中最前端
Back
:獲取連結串列中最後端
InsertBefore
:指定的元素之前插入新元素
InsertAfter
:指定的元素之後插入新元素
PushFront
:用於在連結串列的最前端插入新元素。
PushBack
:用於在連結串列的最前端插入新元素。
注意點
在List
包含的方法中,用於插入新元素的那些方法都只接受interface{}
型別的值。這些方法在內部會使用Element
值包裝接收到的新元素。
這樣做正是為了避免直接使用我們自己生成的元素,主要原因是避免連結串列的內部關聯遭到外界破壞,這對於連結串列本身以及我們這些使用者來說,都是有益的。
為什麼連結串列可以做到開箱即用?
延遲初始化,你可以理解為把初始化操作延後,僅在實際需要的時候才進行。延遲初始化的優點在於“延後”,它可以分散初始化操作帶來的計算量和儲存空間消耗。
List
利用了自身,以及Element
在結構上的特點,巧妙地平衡了延遲初始化的優缺點,使得連結串列可以開箱即用,並且在效能上可以達到最優。