LoginSignup
1
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-07-28

マップ(Map)

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

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

golang-map.png

定義方法

方法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

golang-find.png

要素の走査 (iteration)

  • range でMapを走査できる。
  for key, value := range languages{
    ...
  }

注意: GoのMapのiterationは、

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

要素の衝突

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

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

golang-collision.png

動画

元記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1