#16 Goで学ぶ辞書型(マップ)の基本
Goで名前と値の組み合わせを扱うには、`map`という仕組みを使います。この記事では、Goにおける辞書に相当する使い方と、初期化・削除まで含めた基本操作を解説します。
mapを作ってみる
person := map[string]string{"name": "太郎"}
空のmapを作りたい場合は`make`関数を使います。`var m map[string]string`のように宣言だけした場合はnil mapになり、要素を追加しようとすると実行時エラーになるため注意が必要です。
m := make(map[string]string)
m["name"] = "太郎"
値を取り出す
存在しないキーにアクセスしても、Goではエラーにならず、その型の「ゼロ値」(以前の記事で触れた仕組み)が返ってきます。
value, ok := person["email"]
if !ok {
fmt.Println("見つかりません")
}
2つ目の戻り値`ok`を確認することで、値が実際に存在したかどうかを判断できます。
値を削除する
delete(person, "name")
`delete`関数は、指定したキーが存在しない場合でもエラーにならず、何も起こりません。
全てのキーと値を順に処理する
for key, value := range person {
fmt.Println(key, value)
}
Goのmapはキーの並び順を保証しません。`range`で処理するたびに順番が変わる可能性があるため、順序が重要な場合はキーを別途スライスに取り出してソートする必要があります。
Goならではの注意点
「存在しないキーにアクセスしてもエラーにならない」という仕様は、Goを学び始めた人が誤解しやすいポイントです。値が本当に存在するかを確認したい場合は、必ず2つ目の戻り値`ok`を確認する癖をつけましょう。また、`make`せずに宣言しただけのnil mapへの書き込みはパニック(実行時エラー)になる一方、nil mapからの読み取りは問題なくゼロ値が返る、という非対称な挙動もGo特有の落とし穴です。
まとめ
Goの辞書は`map`が基本で、`make`での初期化、キーの存在確認には2つ目の戻り値、削除には`delete`関数を使います。ゼロ値やnil mapとの違いを意識して安全に扱いましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Goをもっと学びたい方には「Go言語入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿