Golang PR

Go言語(Golang)のmapの要素削除を徹底解説!【初心者向け】

記事内に商品プロモーションを含む場合があります

Go言語は、
シンプルかつ効率的なプログラミング言語として、
多くのエンジニアに利用されています。

その中でも、マップ(map)は
よく使われるデータ構造の一つです。

本記事では、
初心者でもわかるようにGoのマップについて説明し、
特に「要素の削除」に焦点を当てて解説します。

Goのマップとは?

Goのマップは、
他のプログラミング言語で言う「辞書」や
「ハッシュテーブル」と似た機能を持っています。

つまり、キーと値のペアでデータを管理する仕組みです。

マップの用途

例えば、
果物の名前とその個数を管理するとき、
キーに果物の名前(例:「apple」)、
値にその個数(例:5)を設定できます。

このように、
データをペアで管理し、
キーを使って簡単に値を探し出すことができるのがマップです。

マップの宣言と初期化

マップを使うためには、
まず宣言して初期化する必要があります。

Goでは、make関数を使ってマップを作成します。

m := make(map[string]int)


上記の例では、
キーは文字列型(string)、
値は整数型(int)のマップが作られます。

また、
マップリテラルを使って初期値を設定することもできます。

package main

import "fmt"

func main() {
	m := map[string]int{"apple": 5, "banana": 7}
	fmt.Println(m)
}

Go Playgroundでコードを確認


この方法では、
マップが「apple」というキーに5、
「banana」というキーに7を
それぞれ関連付けた状態で初期化されます。

マップ操作の基本

マップを使うと、データの追加や取得、削除が簡単にできます。

キーと値の追加

新しいデータをマップに追加するには、
以下のようにキーを指定して値を設定します。

m["cherry"] = 9


これで、
キー「cherry」に値9が関連付けられました。

値の取得と更新

特定のキーに関連付けられた値を
取得するには、そのキーを指定します。

fmt.Println(m["apple"]) // 出力: 5


また、
同じ方法で値を更新することも可能です。

m["apple"] = 10

要素の存在確認

マップに特定のキーが存在するか
確認する方法も覚えておくと便利です。

package main

import "fmt"

func main() {
	m := map[string]int{"apple": 5, "banana": 7}
	fmt.Println(m)

	m["cherry"] = 9
	fmt.Println(m)

	fmt.Println(m["apple"]) // 出力: 5

	value, exists := m["banana"]
	if exists {
		fmt.Println("Banana exists with value:", value)
	}
}

Go Playgroundでコードを確認

この例では、existstrueの場合に
「banana」というキーがマップに存在し、
その値が表示されます。

マップから要素を削除する

さて、この記事のメインテーマである
「マップの要素削除」について解説します。

Goでは、delete関数を使って
マップから特定のキーを削除することができます。

delete関数を使った要素削除

例えば、
次のコードは、キー「banana」とそれに関連する値を削除するものです。

package main

import "fmt"

func main() {
	m := map[string]int{"apple": 5, "banana": 7}
	fmt.Println(m)

	delete(m, "banana")
	fmt.Println(m["banana"]) // 出力: ゼロ値 (この場合は0)
}

Go Playgroundでコードを確認


削除が成功すると、
そのキーと値のペアはマップから消えます。
削除後にそのキーを参照しようとしても何も返されません。

このように、削除されたキーはマップに存在しなくなります。

削除後の注意点

削除された要素を参照しようとすると、
Goでは自動的にその値の「ゼロ値」が返されます。

ゼロ値とは、値の型に応じたデフォルトの値です。

例えば、整数の場合は0、
文字列の場合は空文字列が返されます。

また、
削除してもマップ自体が縮小したり
リセットされたりするわけではなく、
ただそのキーと値のペアがなくなるだけです。

マップ全体をクリアする

マップから全ての要素を
一気に削除したい場合もありますが、
Goには直接すべての要素をクリアする関数はありません。

そのため、
新しい空のマップを割り当てるか、
delete関数を使ってループで一つずつ削除します。

package main

import "fmt"

func main() {
	m := map[string]int{"apple": 5, "banana": 7}
	fmt.Println(m)

	m["cherry"] = 9
	fmt.Println(m)

	fmt.Println(m["apple"]) // 出力: 5

	value, exists := m["banana"]
	if exists {
		fmt.Println("Banana exists with value:", value)
	}

	// 全削除
	for key := range m {
		delete(m, key)
	}
	fmt.Println(m) //map[]
}

Go Playgroundでコードを確認

このコードでは、
すべてのキーに対してdeleteを実行し、
マップ内の全要素を削除します。

まとめ

本記事では、
Go言語のマップの基本操作と
要素削除について解説しました。

マップは非常に便利なデータ構造で、
データの追加、取得、削除が効率的に行えます。

特にdelete関数を使った要素削除は、
キーと値のペアを管理する上で欠かせない操作です。

次のステップとして、
マップの並行処理や
パフォーマンスに関する話題にも挑戦してみてください!