最近工作中使用go語言,記錄一下學習中的一些收穫。
list.go
go中的list實現方法比較特殊,為乙個環形的雙向鍊錶,乙個root節點。
... -> root -> node1 -> node2 -> ...
... <- root <- node1 <- node2 <- ...
能夠比較快速的得到鍊錶首/尾節點。
以後在需要使用list的時候可以考慮這種形式。
type element struct // go中任意型別的值,相當於void*,
// 變數名首字母大寫,表示對外可見 }
type list struct
常用的函式:
func (e *element) next() *element }
func (e *element) prev() *element
func (l *list) init() *list
func new() *list
func (l *list) len() int
func (l *list) front *element
return l.root.next }
func (l *list) back() *element
func (l *list) lazyinit() }
func (l *list) insert(e, at *element) *element
func (l *list) insertvalue(v inte***ce{}, at *element) *element , at)}
func (l *list) remove(e *element) *element
func (l *list) remove(e *element) inte***ce{}
return e.value
}func (l *list) pushfront(v inte***ce{}) *element
func (l *list) insertbefore(v inte***ce{}, mark *element) *element
func (l *list) insertafter(v inte***ce{}, mark *element) *element
func (l *list) movetofront(e *element)
l.insert(l.remove(e), &l.root)
}func (l *list) movetoback(e *element)
func (l *list) movebefore(e, mark *element)
func (l *list) moveafter(e, mark *element)
func (l *list) pushbacklist(other *list)
func (l *list) pushfrontlist(other *list)
可以自己寫一遍函式實現
Redis學習系列三List列表
一 簡介 redis中的列表相當於c 中的linkedlist,也就是鍊錶,如果你研究過鍊錶這個資料結構,肯定知道.它的插入和刪除是非常快的,但是定位卻很慢,因為必須遍歷所有的元素,才能找到對應的值,所以當你需要對列表進行統計的時候,建立跑後台服務去做,而不是使用redis去遍歷,因為開銷很大.re...
go語言列表list
在 go 語言中,將列表使用 container list 包來實現,內部的實現原理是雙鏈表。列表能夠高效地進行任意位置的元素插入和刪除操作。list 的初始化有兩種方法 new 和宣告。兩種方法的初始化效果都是一致的。通過 container list 包的 new 方法初始化 list 變數名 ...
Go語言學習系列 序言
在好久之前就說要學go語言的,中間斷斷續續的學了點,但是都沒有系統的學習,也沒有好好的整理自己學習的東西,而且工作沒有用到,到現在慢慢的許多都忘記了,從現在開始開始拾起開始學習go語言。go語言的官網為 go語言官網的文件中開頭就指明了go程式語言是開源的語言,正式因為這個原因,所有就學起了go語言...