コンテンツにスキップ

Go/マップ

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go


Go言語のmapは、キーと値のペアを格納するビルトイン型(事前に宣言された型)です。他の言語でいうハッシュテーブルや辞書に相当します。

基本的な特徴

[編集]

mapは参照型で、キーを使って値を効率的に検索、挿入、削除できます。キーは比較可能な型(==!=が使える型)である必要があります。

宣言と初期化

[編集]
// 宣言のみ(ゼロ値はnil)
var m map[string]int

// make関数で初期化
m = make(map[string]int)

// 宣言と初期化を同時に
m := make(map[string]int)

// リテラルで初期化
m := map[string]int{
    "apple":  100,
    "banana": 200,
}

基本操作

[編集]
// 値の設定
m["key"] = 42

// 値の取得
value := m["key"]

// 存在確認付きの取得 
if value, ok := m["key"]; ok {
    fmt.Println("値が存在します:", value)
}

// 削除
delete(m, "key")

// 長さの取得
len(m)

重要なポイント

[編集]
  • mapのゼロ値はnilで、nilmapには書き込みできません
  • キーの順序は保証されません
  • 同じキーに対して複数回書き込むと、最後の値で上書きされます
  • 存在しないキーにアクセスすると、値型のゼロ値が返されます

mapは非常に効率的で、Go言語でよく使用される重要なデータ構造です。