サンプルを通して Go を学ぶ: マップ

マップは Go の組み込み連想配列データ型です(他の言語ではハッシュまたは辞書と呼ばれることもあります)。

package main
import (
    "fmt"
    "maps"
)
func main() {

空のマップを作成するには、組み込み関数のmakeを使用します: make(map[キーの型]値の型)

    m := make(map[string]int)

一般的なname[key] = val構文を使用して、キーと値のペアを設定します。

    m["k1"] = 7
    m["k2"] = 13

たとえば、fmt.Printlnでマップを出力すると、すべてのキーと値のペアが表示されます。

    fmt.Println("map:", m)

キーに対応する値は、name[key]で取得します。

    v1 := m["k1"]
    fmt.Println("v1:", v1)

キーが存在しない場合、その値の型に対応するゼロ値が返されます。

    v3 := m["k3"]
    fmt.Println("v3:", v3)

組み込み関数lenは、マップを呼び出したときのキーと値のペアの数を返します。

    fmt.Println("len:", len(m))

組み込み関数deleteは、マップからキーと値のペアを削除します。

    delete(m, "k2")
    fmt.Println("map:", m)

マップからすべてのキーと値のペアを削除するには、組み込み関数clearを使用します。

    clear(m)
    fmt.Println("map:", m)

マップから値を取得するときにオプションの 2 番目の戻り値は、マップにキーが存在したかどうかを示します。これにより、キーが存在しない場合と、0または""などのゼロ値を持つキーがある場合を区別できます。この例では値自体が必要ないので、空白識別子_を使用して無視しました。

    _, prs := m["k2"]
    fmt.Println("prs:", prs)

この構文を使用して、同じ行に新しいマップを宣言して初期化することもできます。

    n := map[string]int{"foo": 1, "bar": 2}
    fmt.Println("map:", n)

mapsパッケージには、マップに対して役立つ多数のユーティリティ関数が含まれています。

    n2 := map[string]int{"foo": 1, "bar": 2}
    if maps.Equal(n, n2) {
        fmt.Println("n == n2")
    }
}

マップは、fmt.Printlnで出力するとmap[キー:値 キー:値]という形式で表示されることに注意してください。

$ go run maps.go 
map: map[k1:7 k2:13]
v1: 7
v3: 0
len: 2
map: map[k1:7]
map: map[]
prs: false
map: map[bar:2 foo:1]
n == n2

次の例:範囲.