はじめに
Go言語のMapは、非常に便利なデータ構造であり、多くのアプリケーションに使われることがあります。この記事では、GolangのMapの基礎的な使い方と応用をまとめます。
Mapの基礎的な使い方
Mapを使うには、最初に make()
関数を使って新しいMapを作成する必要があります。新しいMapは以下のように作成できます。
//make(map[key名]value)の型名
intMap := make(map[string]int) //valueがint型
stringMap := make(map[string]string) //valueがstring型
Mapの要素を追加するには、[key] = value
の形式を使用します。以下のように追加することができます。
m["foo"] = 10
Mapから値を取得するには、[key]
の形式を使用します。以下のように取得することができます。
value := m["foo"]
Mapのネスト
Mapを使うと、複雑なデータ構造を簡単に作ることができます。Mapをネストさせることで、複雑な構造を作成することができます。たとえば、以下のようにネストさせることができます。
//map[int]stringをvalueとしたMap
m := make(map[string]map[int]string
キーが存在するか確認する
マップにキーが存在するかを確認する必要がある場合は、_, ok := m[key]
構文を使用することができます。これはマップにキーが存在するかを確認します。存在する場合、ok
はtrue
に設定され、存在しない場合はfalse
に設定されます。これは、値を取得することなく、特定のキーが存在するかを確認する必要がある場合に便利です。
Golangでは、OK構文を使用することで、マップのキーが存在するかを確認することができます。次のサンプルコードは、マップにキーが存在するかを確認する方法を示しています。
v, ok := m[key]
if ok {
// キーが存在する場合の処理
} else {
// キーが存在しない場合の処理
}
このサンプルコードを使用すると、m[key]
の値がv
に格納され、キーが存在するかどうかをok
で確認することができます。
マップをループする
マップの全ての要素を反復処理してキーの存在を確認する必要がある場合は、range
キーワードを使用することができます。これにより、マップの全ての要素をループしてキーと値にアクセスすることができます。例えば、このコードは、マップの全ての要素をループしてキーと値を表示します。
for key, value := range m {
fmt.Println("key:", key, "value:", value)
}
まとめ
//Mapの生成
//make(map[key名]value)の型名
intMap := make(map[string]int) //valueがint型
stringMap := make(map[string]string) //valueがstring型
//map[int]stringをvalueとしたMap
m := make(map[string]map[int]string)
//Keyの存在判定
v, ok := m[key]
if ok {
// キーが存在する場合の処理
} else {
// キーが存在しない場合の処理
}
// マップを全ループする
for key, value := range m {
fmt.Println("key:", key, "value:", value)
}