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


マップ(Map)

Golangではハッシュテーブル(hash table)のことを 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は衝突を起こしたキー同士をポインターでつなぎます。(連鎖法

動画

元記事