goのcontainer/list
使い方のメモ
container/listは双方向リストをサポートしている。listはリストそのものを表現するList型と格納される要素を表現するElement型で構成されている。
Element型はValueというinterface型を持っているので、どんな値でも入れられる。
type Element struct { Value interface{} }
func New() *List
初期化されたList型のポインタを返す
hogelist := list.New()
func(l *list)Front()*Element
リストの先頭の要素のポインタを返す
p := hogelist.Front()
func(e *Element)Next()
eの次の要素のポインタを返す
p = p.Next()
func(e *Element)Prev()
eの前の要素のポインタを返す
p = p.Prev()
func(l *List)PushFront(value interface{}
リストの先頭から入れる
hogelist.PushBack(8) hogelist.PushBack("bar")
func(*List)PushBack(value interface{}
リストの末尾から入れる
hogelist.PushBack(8) hogelist.PushBack("bar")
func (l *List) InsertAfter(value interface{}, mark *Element) *Element
markで指定した要素の後ろに要素を挿入する
p := hogelist.Front()
hogelist.InsertAfter("hoge",p)
func (l *List)InsertBefore(value interface{}, mark *Element) *Element
markで指定した要素の後ろに要素を挿入する
p := hogelist.Front()
hogelist.InsertBefore("Golang",p)
func (l *List)MoveToBack(e *Element)
eを末尾に移動 移動させるだけなのでもちろん値は返さない
p := hogelist.Front() hogelist.MoveToBack(p)
func (l *List)MoveToFront(e *Element)
eを先頭に移動
p := hogelist.Back() hogelist.MoveToFront(p)
func (l *List)MoveBefore(e,mark *Element)
eをmarkの前に移動
s := hogelist.Front() p := hogelist.Back() hogelist.MoveBefore(p,s)
func (l *List)MoveAfter(e,mark *Element)
eをmarkの後ろに移動
s := hogelist.Front() p := hogelist.Back() hogelist.MoveBefore(p,s)
func (l *List)Remove(e *Element)
eをリストから削除
p := hogelist.Front() hogelist.Remove(p)
func (l *List)Len() int
リストの長さを返す
len := hogelist.Len()
func (l *List)PushFrontList(l2 *List)
他のリストを前にくっつける
hogelist2 := list.New()
hogelist2.PushFront(888)
hogelist2.PushFrontList(hogelist)
func (l *List)PushBackList(l2 *List)
他のリストを後ろにくっつける
hogelist2 := list.New()
hogelist2.PushFront(888)
hogelist2.PushBackList(hogelist)
これぐらいの内容だったら
list - The Go Programming Language
を直接見た方がいい気がする
参考にしたもの