Goのmap(マップ)について
mapとは?
- map(マップ)とはキーと値の集まり
- JSでいうとオブジェクト(map)のようなもの
マップの宣言方法
下記はkeyがstring、値がint型のmapを宣言している
m := map[string]int{}
気になるポイント
①keyはstring以外でも通用するのだろうか??
→ 結論、string以外も使用出来る!<br /> ただ、Goの map の key にできるのは、ざっくり言うと 比較できる型です。
例, string, bool , int等
[!warning] 注意 function / slice / map は比較出来ないので、keyには割り当てられない!!
make関数
- make関数は3つの参照型のデータ作成と初期化を同時に行う組み込み関数
- スライス
- マップ
- チャネル
- makeをつかないと、、、→変数がすべてnil(空)になってしまう→プログラムが強制終了(panic)になってしまう可能性がある!
- makeを使って初期化するのが間違いない!!!!!!
makeを使ったmapの宣言
- イメージとしてはmake()関数でmapをラップする
- intの後に{}を付与しない
m := make(map[string]int)
マップの追加方法
// まずはマップを宣言+初期化
m := make(map[string]int)
// keyを指定して、値を追加
m["key"] = 10
マップから値を取得する
m["key"] = 10
// keyの値を取得したいとき
value := m["key"]
keyが存在しない場合
// これだと、ゼロ値になってしまう
value := m["sonzaisinai]
// 第2引数で、存在するかのbooleanを取得できる
value, ok := m["sonzaisinai]
if ok {
// 存在する場合
fmt.Println("存在するどぉ", value)
} else {
// 存在しない場合
fmt.Println("存在しねえど")
}
mapから値を削除する
mapからキーと値を削除する場合、delete()関数 を利用する
// delete関数を用いて、naiyatuとその値を削除してみる
// 使い方→delete({mapで定義した変数}, {key名})
delete(m, "naiyatu")
マップの反復処理
マップを繰り返し処理するには、for と range を利用する
for key, value := range m {
fmt.Println("key", key, "value", value)
}
メタデータ
- ステータス: 完了
- タグ: Go, アウトプット
- 作成日時: 2026/06/11
- 更新日時: 2026/06/11