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
を直接見た方がいい気がする

参考にしたもの