【Golang】リストについて詳しく解説!

Golang

リストは、プログラミングの重要な要素で、今日使われている最も重要なデータ構造の1つです。この記事では、Goのリストについて詳しく解説していきます。

Golangの container/list パッケージとは

Goでリストを使うには、containerパッケージの中にlistパッケージをインポートします。そして、組み込みのデータ型とその関数を使うことで、Go でリストを使うことができます。

import "container/list"

Golangのリストとは?

リストとは、Goプログラミングでは基本的にリンクリストのことです。

このパッケージには、リストの項目とリスト自身を定義する2つの構造体があります。これらの構造体は、ElementとListと言います。

Goでリストを初期化する方法

ここでは、Goで空のリストを初期化する方法を説明します。リストには何も含まれないので、リストの先頭と末尾は nil になります。

l := list.New()    // Initialize an empty list
fmt.Println(l)      // &{{0x43e280 0x43e280 <nil> <nil>} 0}

前と後ろの要素

front関数とback関数は、それぞれ前方と後方にある項目を取得します。ここでは、空リストなので、両方の項目がnilになっています。

fmt.Println(l.Front())      // <nil>
fmt.Println(l.Back())       // <nil>

リストへの項目の追加

リストに項目を追加するには、さまざまな方法があります。ここでは、その方法を紹介します。

1.前面に項目を追加する

l.PushFront(10)
fmt.Println(l.Front())       // &{0x43e280 0x43e280 0x43e280 10}

PushFrontList 関数を使用すると、リスト全体を他のリストの前に押し出すことができます。挿入されるリストは適切に初期化されなければならないので、注意が必要です。

l.PushFrontList(l2)    // where l2 is another list

2.背面にアイテムを追加する

PushBack 機能は、あるアイテムを受け取り、それを後方にプッシュする機能である。

package main
 
import (
    "fmt"
    "container/list"
)
 
func main() {
    l := list.New()
    l.PushBack(10)
    l.PushBack(12)
    l.PushBack(14)
    for e := l.Front(); e != nil; e = e.Next() {
        fmt.Println(e)
    }
     
    // &{0x43e2c0 0x43e280 0x43e280 10}
    // &{0x43e2e0 0x43e2a0 0x43e280 12}
    // &{0x43e280 0x43e2c0 0x43e280 14}
}

PushBackListも同様ですが、リスト全体を受け取り、それを後ろのリストに追加します。

l.PushBackList(l2)  // l2 is a list

リストから項目を削除する

remove関数は、渡された要素をリストから削除するだけです。以下はその動作です。

package main
 
import (
    "fmt"
    "container/list"
)
 
func main() {
    l := list.New()
 
        // store the reference
    v := l.PushBack(10)
    fmt.Println(l.Front())      // &{0x43e280 0x43e280 0x43e280 10}
        
        // remove using the reference
    l.Remove(v)
    fmt.Println(l.Front())      // <nil>
}
タイトルとURLをコピーしました