terada_life
<!-- omit in toc -->

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")

マップの反復処理

マップを繰り返し処理するには、forrange を利用する

for key, value := range m {
  fmt.Println("key", key, "value", value)
}

メタデータ

  • ステータス: 完了
  • タグ: Go, アウトプット
  • 作成日時: 2026/06/11
  • 更新日時: 2026/06/11