[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 は衝突を起こしたキー同士をポインターでつなぎます。(連鎖法)