go語言container包中的那些容器

go語言container包中的那些容器

主要內(nèi)容

ListElement。前者實(shí)現(xiàn)了一個雙向鏈表(以下簡稱鏈表),而后者則代表了鏈表中元素的結(jié)構(gòu)。

ListElement都是結(jié)構(gòu)體類型。結(jié)構(gòu)體類型有一個特點(diǎn),那就是它們的零值都會是擁有其特定結(jié)構(gòu),但沒有任何定制化內(nèi)容的值,相當(dāng)于一個空殼


List的主要方法:

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

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

MoveToFront:把給定的元素移動到鏈表的最前端

MoveToBack:把給定的元素移動到鏈表的最后端

Front:獲取鏈表中最前端

Back:獲取鏈表中最后端

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

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

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

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


注意點(diǎn)

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

這樣做正是為了避免直接使用我們自己生成的元素,主要原因是避免鏈表的內(nèi)部關(guān)聯(lián)遭到外界破壞,這對于鏈表本身以及我們這些使用者來說,都是有益的。


為什么鏈表可以做到開箱即用?

延遲初始化,你可以理解為把初始化操作延后,僅在實(shí)際需要的時候才進(jìn)行。延遲初始化的優(yōu)點(diǎn)在于“延后”,它可以分散初始化操作帶來的計算量和存儲空間消耗。

List利用了自身,以及Element在結(jié)構(gòu)上的特點(diǎn),巧妙地平衡了延遲初始化的優(yōu)缺點(diǎn),使得鏈表可以開箱即用,并且在性能上可以達(dá)到最優(yōu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容