PROGRAMMING July 28, 2020

[Go言語] 初心者必見シリーズ: マップ(Map)

Words count 2.8k Reading time 3 mins. Read count 0

マップ(Map)

Golangではハッシュテーブル(hash table)のことを map と呼びます。

キーと値の組を複数個格納し、キーに対応する値をすばやく参照するためのデータ構造です。

Mapのイメージ

定義方法

方法1

  • 構文

    変数名 := map[型]型{初期値1, ..., 初期値n}
  • languages := map[string]string{
        "go":"golang", 
        "rb":"ruby", 
        "js":"javascript",
    }

方法2

  • 構文

    変数名 := make(map[型]型, 容量)
  • languages := make(map[string]string)
    languages["go"] = "golang"
    languages["rb"] = "ruby"
    languages["js"] = "javascript"

要素の挿入と更新

  • 要素の挿入や更新:

    languages := map[string]string{}
    languages["go"] = "golang" // "go"キーが存在する場合は、valueが "golang" に更新され、
                                 //  存在しない場合は、("go", "golang") という Key-ValueのペアがMapに挿入される。    
  • 要素の取得:

     elem, ok := languages["go"] // "go"キーが存在する場合は、 ok == true
                                 //          存在しない場合は、ok == false

    要素取得のイメージ

要素の走査 (iteration)

  • range でMapを走査できる。

    for key, value := range languages{
      ...
    }

    注意: GoのMapのiterationは、

       要素がランダムに取得されるため、実行するたびに異なる結果になります。

要素の衝突

複数の異なるキーが同じバケットに入ることを衝突(collision)と呼びます。

GoのMapは衝突を起こしたキー同士をポインターでつなぎます。(連鎖法

要素衝突時

動画 (YouTube)

0%