片方向連結リストを提供するモジュールです。type Nodeが使われています。
連結順でのノード操作は、Front()
で生成したlist.Iterator interfaceを利用します。
import "github.com/l4go/list"
vendoringして使うことを推奨します。
双方向連結リスト(*List
)を生成します。
free引数で、ノード削除時の処理を指定できます。消去時に特殊な処理が必要ない場合はnilを指定します。
全要素を譲渡した*List
を生成し、この操作をしたリストを空にします。
主に、リストを他の処理へ譲渡する場合の、メモリ解放処理のコードを単純化するために使います。
Move()
を使うことで、リストを他の処理に譲渡した場合の、Clear()
による多重なメモリ解放が防げます。
これによりdefer
などでの、無条件なClear()
呼び出しが可能になります。(結果的にソースコードをシンプルにすることが出来ます。)
リストの要素が空の時にtrueを、それ以外の時はfalseをかえします。
保持しているノードを全て開放します。 NewList()で指定された初期化処理も合わせて実行します。
先頭の要素を取り出します。
末尾に要素を追加します。
先頭要素から始まる末尾方向へ辿るIterator interfaceを生成します。